Подтвердить что ты не робот

Как извлечь определенные ключи и значения массива в другой массив?

У меня есть массив массивов, например:

array( array(), array(), array(), array() );

массивы внутри основного массива содержат 4 ключа и их значения. Клавиши одинаковы для всех массивов, таких как:

array( 'id' => 'post_1',
       'desc' => 'Description 1',
       'type' => 'type1',
       'title' => 'Title'
     );

array( 'id' => 'post_2',
       'desc' => 'Description 2',
       'type' => 'type2',
       'title' => 'Title'
     );

Итак, я хочу создать другой массив и извлечь значения id и type и поместить их в новый массив следующим образом:

array( 'post_1' => 'type1', 'post_2' => 'type2'); // and so on

Ключи в этом массиве будут иметь значение id старых массивов и их значение будет значением ключа type.

Так можно ли это достичь? Я попытался выполнить поиск функций массива php.net, но я не знаю, какую функцию использовать?

И спасибо заранее.

4b9b3361

Ответ 1

Просто используйте хороший цикл ol:

$newArray = array();
foreach ($oldArray as $entry) {
    $newArray[$entry['id']] = $entry['type'];
}

Ответ 2

Недавно PHP добавил новую функцию к своим функциям массива, которая делает именно то, что вы хотели. Я отвечаю на это в надежде, что это может помочь кому-то в будущем с этим вопросом.

Функция, которая делает это: array_column. Чтобы получить то, что вы хотели, вы должны написать: array_column($oldArray, 'type', 'id');

Обратите внимание, что он был введен только в версии PHP 5.5.0, поэтому для его использования в более низких версиях PHP либо использовать принятый ответ, либо взглянуть на то, как эта функция была реализована на PHP и использовать эту библиотеку: https://github.com/ramsey/array_column

Ответ 3

Предположим, что у нас есть массив $oldArray, из которого мы хотим извлечь, а второй массив $array - это тот, в котором мы будем хранить извлеченные значения, которые изначально пустой.

$oldArray = array(
    0 => array( 'id' => 'post_1',
           'desc' => 'Description 1',
           'type' => 'type1',
           'title' => 'Title'
         ),

    1 => array( 'id' => 'post_2',
           'desc' => 'Description 2',
           'type' => 'type2',
           'title' => 'Title'
         )
);

$array = array(); //Blank array

foreach(oldArray as $i => $oldarray){
    $array[$i][$oldarray['id']] = $oldarray['type'];
}

Теперь $массив имеет пару ключ/значение, как показано ниже

array(
    0 => array('post_1' => 'type1'),

    1 => array( 'post_2' => 'post_2')
);