У меня есть массив массивов, например:
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 Array, но я не знаю, какую функцию использовать?
И спасибо заранее.
Просто используйте хороший цикл ol:
$newArray = array(); foreach ($oldArray as $entry) { $newArray[$entry['id']] = $entry['type']; }
Недавно PHP добавил новую функцию к своим функциям массива, которая делает именно то, что вы хотели. Я отвечаю на это в надежде, что это может помочь кому-то в будущем с этим вопросом.
Функция, которая делает это: array_column . Чтобы получить то, что вы хотели, вы должны написать: array_column($oldArray, 'type', 'id');
Обратите внимание, что он был введен только в версии PHP 5.5.0, поэтому для его использования в более низких версиях PHP либо использовать принятый ответ, либо взглянуть на то, как эта функция была реализована в PHP и использовать эту библиотеку: https: // github. ком / Ramsey / array_column
Предположим, у нас есть массив $ 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 имеет пару ключ / значение, как показано ниже.
array( 0 => array('post_1' => 'type1'), 1 => array( 'post_2' => 'post_2') );