Иногда вам может понадобиться произвольно переиндексировать массив данных в PHP. WordPress на самом деле не предоставляет функции для этого, поэтому автор оригинального поста (ссылка на оригинал в низу страницы) собрал этот фрагмент кода:
/**
* Index a collection of arrays/objects by a specific key/property.
*
* @param string $index
* @param array $data
* @return array
*/
function index_by( $index, array $data ) {
$indexed_data = array();
foreach( $data as $item ) {
if( is_array( $item ) && array_key_exists( $index, $item ) ) {
$indexed_data[$item[$index]] = $item;
} else if( is_object( $item ) && property_exists( $item, $index ) ) {
$indexed_data[$item->$index] = $item;
}
}
return $indexed_data;
}
Эта служебная функция может быть полезна для любого PHP-проекта. Это удобно, когда вы хотите взять индексированный массив и преобразовать его в ассоциативный массив.
Например, взять коллекцию постов и проиндексировать их по ID становится очень просто:
$posts = get_posts();
$posts_by_id = index_by( 'ID', $posts );
Эта функция будет одинаково хорошо работать с массивом объектов или массивом массивов.
Статья была переведена для блога TechBlog.SDStudio.top
Источник: wpscholar.com