Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Переименование ключей массива

#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);

Комментариев нет:

Отправить комментарий