преобразовать массив в словарь в переполнении стека

У меня есть массив (возвращается из базы данных), выглядит так:

response = {
0 = {
id = "12312132",
title = "title1",
....
createDT = "2015-03-03 22:53:17"}
1 = {
id = "456456456",
title = "title2",
....
createDT = "2015-03-03 22:53:17"}
2 = {
id = "789789789",
title = "title3",
....
createDT = "2015-03-03 22:53:17"}
}

Мне нужно преобразовать это в словаре использовать PHP следующим образом:

response = {
"12312132" = {
title = "title1",
....
createDT = "2015-03-03 22:53:17"}
"456456456" = {
title = "title2",
....
createDT = "2015-03-03 22:53:17"}
"789789789" = {
title = "title3",
....
createDT = "2015-03-03 22:53:17"}
}

то есть key является id, Возможно, в php есть какая-то функция, для которой это легко?

1

Решение

Там нет ничего dictionary термин в PHP. Что вы на самом деле имеете в виду associative arrayтакже широко известный как hash, Хотя то же самое, но это может облегчить Google в будущем.

Вы можете сделать это несколькими способами, я дам вам классический foreach() один. Я думаю array_map() подход был бы возможен тоже.

$response = ...;        // your database response
$converted = array();   // declaring some clean array, just to be sure

foreach ($response as $row) {
$converted[$row['id']] = $row;        // entire row (for example $response[1]) is copied
unset($converted[$row['id']]['id']);  // deleting element with key 'id' as we don't need it anymore inside
}
print_r($converted);
4

Другие решения

Нет, но вы можете написать небольшую программу на PHP:

$result = array();
foreach ($response as $row)
{
$id = $row['id'];
unset($row['id']);
$result[$id] = $row;
}

echo '<pre>';
print_r($result);
echo '</pre>';

И даже сделайте это своей собственной функцией:

function dictonary($response)
{
$result = array();
foreach ($response as $row)
{
$id = $row['id'];
unset($row['id']);
$result[$id] = $row;
}
return $result;
}
0

Просмотрите результаты, чтобы снова заполнить массив в новом формате

    $count = count($response) // count the items of your initial array
$i=0;
while($i<$count) { //start a loop to populate new array
$key = $response[i]['id'];
$new_response[$key] = array('title' =>  $response[i]['title'], ... ,'createDT' => $response[i]['createDT']);
$i++;
} // end loop

print_r($new_response);
0
По вопросам рекламы [email protected]