Можно ли назначить ключи для элементов массива в PHP из столбца значений с меньшим количеством кода? - PullRequest
1 голос
/ 13 мая 2019

Давайте предположим, что у меня есть массив элементов, которые сами являются массивами, например:

$array = [
    ['foo' => 'ABC', 'bar' => 'DEF'],
    ['foo' => 'ABB', 'bar' => 'DDD'],
    ['foo' => 'BAC', 'bar' => 'EFF'],
];

Чтобы установить значения поля foo в качестве ключа массива, я мог бы сделать это:

foreach ($array as $element) {
    $new_array[$element['foo']] = $element;
}
$array = $new_array;

Код, естественно, тривиален, но мне было интересно, есть ли встроенный, который может сделать то же самое для меня.

Ответы [ 3 ]

4 голосов
/ 13 мая 2019

Уведомление array-column также может получить индекс (третий аргумент):

mixed $ index_key = NULL

Так что просто используйте как:

array_column($array, null, 'foo');
2 голосов
/ 13 мая 2019

Вот один вкладыш для вашего случая,

$temp = array_combine(array_column($array, 'foo'), $array);

Работает демо .

array_combine - Создает массив с использованием одного массивадля ключей и другое для его значений
array_column - вернуть значения из одного столбца во входном массиве

0 голосов
/ 13 мая 2019

Вы также можете сделать это с помощью array_reduce

$new_array = array_reduce($array, function($carry, $item) {
    $carry[$item['foo']] = $item;
    return $carry;
}, []);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...