#php #массивы
Здравствуйте. Имеется двумерный массив следующего вида: array(211) { [0]=> array(3) { ["name"]=> string ["type"]=> string ["id"]=> int(54609) [1]=> array(3) { ["name"]=> string ["type"]=> string ["id"]=> int(2849) [2]=> array(3) { ["name"]=> string ["type"]=> string ["id"]=> int(59393) и т.д. } Необходимо ключи массивов первого уровня переименовать в значение ["id"], то есть новый массив должен выглядеть так: array(211) { [54609]=> array(3) { ["name"]=> string ["type"]=> string ["id"]=> int(54609) [2849]=> array(3) { ["name"]=> string ["type"]=> string ["id"]=> int(2849) [59393]=> array(3) { ["name"]=> string ["type"]=> string ["id"]=> int(59393) и т.д. } Как это можно реализовать?
Ответы
Ответ 1
Нужно перебрать существующий массив ($old_arr) и на его основе создать новый ($new_arr). $new_arr = []; foreach ($old_arr AS $key => $val) { $new_arr[$val['id']] = $val; }Ответ 2
Для PHP версии 5.5 и выше можно так: $input = array( array('id' => 357), array('id' => 578), ); $columnKey = null; $indexKey = 'id'; $output = array_column($input, $columnKey, $indexKey);Ответ 3
$in=[....]; $out=[]; foreach($in as $value)$out[$value['id']]=$value;Ответ 4
Более красивый способ, чем цикл: $result = array_combine(array_column($myArray, 'id'), $myArray);
Комментариев нет:
Отправить комментарий