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

32

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

<code>array( array(), array(), array(), array() );
</code>

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

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

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

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

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

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

Так возможно ли этого добиться? Я пробовал искатьphp.net Массив Функции но я не знаю, какую функцию использовать?

Ваш Ответ

3   ответа
30

$newArray = array();
foreach ($oldArray as $entry) {
    $newArray[$entry['id']] = $entry['type'];
}
Я проголосовал за вопрос и ответ. Как я могу понизить PHP за отсутствие лучшего метода?
@ Olivier & reg; Scherler Хорошие новости: php предоставил функцию для этого - см. Ответ с более высоким рейтингом.
-1

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

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

Теперь мы просто используемarray_column метод, как показано ниже

$newArr = array_column($oldArr, 'type', 'id');

И это даст вывод в паре ключ / значение, как показано ниже

array
(
    [post_1] => type1
    [post_2] => type2
)
84

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

Функция, которая делает этоarray_column. To get what you wanted you would write:

array_column($oldArray, 'type', 'id');

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

Error: User Rate Limit Exceededphp.net/manual/en/function.array-unique.php

Похожие вопросы