Ответ 1
Просто используйте хороший цикл ol:
$newArray = array();
foreach ($oldArray as $entry) {
$newArray[$entry['id']] = $entry['type'];
}
У меня есть массив массивов, например:
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, но я не знаю, какую функцию использовать?
И спасибо заранее.
Просто используйте хороший цикл 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.com/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(
0 => array('post_1' => 'type1'),
1 => array( 'post_2' => 'post_2')
);