WP_LIST_PLUCK() │ WP 3.1.0
Функция WP_LIST_PLUCK()
позволяет извлечь определённое поле из каждого объекта в списке. Она работает аналогично функции array_column()
(PHP 5.5), но поддерживает также объекты.
Характеристики
-
Производительность:
- 1 раз — 0.00001 сек (практически мгновенно)
- 50,000 раз — 0.45 сек (очень быстро)
-
Нет хуков.
Возврат
Функция возвращает массив найденных значений. Если установлен параметр $index_key
, то возвращается массив, где ключи соответствуют значению этого параметра. Если $index_key
равен null
, сохраняются ключи из исходного списка $input_list
.
Синтаксис использования
wp_list_pluck( $input_list, $field, $index_key );
Параметры:
$input_list
(массив) — обязательный. Список объектов или массивов.$field
(строка или число) — обязательный. Поле объекта, которое будет извлечено.$index_key
(строка или число) — поле объекта, которое будет использовано в качестве ключей для нового массива. По умолчанию:null
.
Примеры использования
Пример 1: Получение всех названий
Рассмотрим массив, содержащий блюда:
$foods = array(
6 => array('name' => 'Банан', 'color' => 'Жёлтый'),
9 => array('name' => 'Киви', 'color' => 'Зелёный'),
1 => array('name' => 'Мандарин', 'color' => 'Оранжевый'),
3 => array('name' => 'Яблоко', 'color' => 'Красный'),
);
// Извлечение всех названий
$food_names = wp_list_pluck( $foods, 'name' );
/* $food_names будет содержать:
Array
(
[6] => Банан
[9] => Киви
[1] => Мандарин
[3] => Яблоко
)
*/
Если указать третий параметр, можно использовать другое поле в качестве ключей:
$food_names = wp_list_pluck( $foods, 'name', 'color' );
/* $food_names будет содержать:
Array
(
[Жёлтый] => Банан
[Зелёный] => Киви
[Оранжевый] => Мандарин
[Красный] => Яблоко
)
*/
Пример 2: Работа с объектами
Рассмотрим пример получения всех заголовков постов, полученных с помощью функции get_posts()
:
$posts = get_posts();
// Извлечение полей post_title в массив
$posts_titles = wp_list_pluck( $posts, 'post_title' );
/* $posts_titles будет содержать массив:
Array
(
[0] => 10 премиум тем для онлайн-магазина на WordPress
[1] => Мониторинг несуществующих страниц (плагин "404 Error Logger")
[2] => WP-Cumulus: 3D облако тегов на Flash (улучшенная русская версия)
[3] => 10 способов изменить RSS-ленту в WordPress
[4] => Плагин вебмастера Яндекс для WordPress
)
*/
Пример 3: Указание ключа из вложенного массива
Допустим, у нас есть массив:
$foods = array(
array('id' => 4, 'name' => 'Банан', 'color' => 'Жёлтый'),
array('id' => '5', 'name' => 'Яблоко', 'color' => 'Красный'),
array('id' => 2, 'name' => 'Салат', 'color' => 'Зелёный'),
array('id' => '7', 'name' => 'Яблоко', 'color' => 'Красный'),
);
// Извлечение названий с использованием id как ключей
$food_names = wp_list_pluck( $foods, 'name', 'id' );
/* Результат будет:
array(
4 => 'Банан',
5 => 'Яблоко',
2 => 'Салат',
7 => 'Яблоко'
);
*/
Изменения
- С версии 3.1.0 — была внедрена.
- С версии 4.0.0 — добавлен параметр
$index_key
. - С версии 4.7.0 — используется класс
WP_List_Util
.
Код функции
function wp_list_pluck( $input_list, $field, $index_key = null ) {
if ( ! is_array( $input_list ) ) {
return array();
}
$util = new WP_List_Util( $input_list );
return $util->pluck( $field, $index_key );
}
Таким образом, функция wp_list_pluck()
будет полезна для работы с данными в формате массивов и объектов в WordPress, позволяя легко извлекать нужные поля.