PHP - Получить массив в массиве и хранить / манипулировать

0

У меня есть существующий массив на PHP, например (когда я использую print_r):

Array (
    [0] => Array(
        [value] => 188
        [label] => Lucy
    )  
    [1] => Array (
        [value] => 189
        [label] => Jessica
    ) 
    [2] => Array (
        [value] => 192
        [label] => Lisa
    ) 
    [3] => Array (
        [value] => 167
        [label] => Carol
    ) 
    // and so on...
) 

Из этого массива мне нужно манипулировать или создавать новый массив следующим образом:

Array (
    [Lucy] => 188
    [Jessica] => 189
    [Lisa] => 192
    [Carol] => 167
) 

Какой лучший способ сделать это?

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

uksort($array, 'strnatcasecmp');
Теги:
arrays
sorting

3 ответа

6
Лучший ответ

ИМХО лучший и самый простой вариант:

$newArray = [];
foreach ($array as $var) {
   $newArray[$var['label']] = $var['value'];
}

Примечание: если не работает из-за [] измените первую строку на классическую версию: $newArray = array(); как то же самое.

6

PHP 5.5 имеет приятную новую функцию array_column(), которая будет делать именно это для вас. Я думаю, вам нужно что-то вроде этого:

$result = array_column($array, 'value', 'label');
0

Вы также можете использовать array_reduce, например:

$new_array = array_reduce($old_array, function($new_array, $item) {
    $new_array[$item['label']] = $item['value'];
    return $new_array;
}, array());

В простых сценариях это, возможно, слишком велико. В приложениях, где происходит много преобразований массивов, второй аргумент array_reduce может быть заменен и заменен в зависимости от контекста.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню