wp_list_pluck() WP 3.1.0

Збирає в масив зазначене поле вкладених масивів багатовимірного масиву.

У функцію віддається масив елементами якого є масиви чи об’єкти. У другому параметрі вказується поле вкладених масивів/об’єктів, які потрібно зібрати з кожного масиву/об’єкта. Функція збирає всі поля зі списку масивів/об’єктів та повертає масив із зібраними полями.

Дивіться також схожу функцію: wp_list_filter() – Фільтрує масив об’єктів і отримує з масиву ті об’єкти, які підходять за вказаними параметрами ( key=>value ).

У PHP 5.5 з’явилася вбудована функція array_column() , яка робить теж wp_list_pluck() , тільки вона не відставляє ключі вихідного масиву, а повертає індексний масив:

array_column( $list, $field, $index_key )

Дивіться опис на сайті .

Працює на ранньому етапі завантаження WordPress, ще до константи SHORTINIT .

Працює на основі:
WP_List_Util::pluck()
1 раз – 0.00001 сек
(швидкість світла) | 50000 разів – 0.45 сек
(дуже швидко)

Хуків немає.

Повертає

Массив. Масив із зібраними полями. Якщо не вдалося отримати дані, порожній масив array() .

Використання

wp_list_pluck( $list, $field, $index_key );
$list
(масив) (обов’язковий)
Масив об’єктів чи масивів.
$field
(рядок) (обов’язковий)
Назва поля вкладеного об’єкта або масиву, яке потрібно витягувати та додавати до підсумкового масиву.
$index_key
(рядок)
Назва поля масиву, яке потрібно використовувати як ключ для масиву, що повертається. З версії 4.0


Типово: null

Приклади

Відео з прикладами

0

#1 Приклад роботи wp_list_pluck()

Цей приклад показує, як функція збирає поля вкладених у масив масивів. Припустимо, у нас є масив масивів з якого нам потрібно отримати все значення поля name:

// Існуючий масив
$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
(
	[Жовтий] => Банан
	[Зелений] => Ківі
	[Помаранчевий] => Мандарин
	[Червоний] => Яблуко
)
*/
0

#2 Робота з об’єктами

Цей приклад більш насущний для WP і показує, як зібрати всі назви постів, отриманих через 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] => Плагін Webmaster Yandex для WordPress
)
0

#3 Вказівка ​​ключа із вкладеного масиву

Допустимо у нас є такий масив:

$foods = array(
	array(
		'id' => 4,
		'name' => 'Banana',
		'color' => 'Yellow',
	),
	array(
		'id' => '5',
		'name' => 'Apple',
		'color' => 'Red',
	),
	array(
		'id' => 2,
		'name' => 'Lettuce',
		'color' => 'Green',
	),
	array(
		'id' => '7',
		'name' => 'Apple',
		'color' => 'Red',
	),
);

І нам потрібно отримати всі поля name і в підсумковому масиві як ключі потрібно використовувати поле id:

$food_names = wp_list_pluck( $foods, 'name', 'id' );

/* Отримаємо
array(
	4 => 'Banana',
	5 => 'Apple',
	2 => 'Lettuce',
	7 => 'Apple'
);
*/

список змін

З версії 3.1.0Введено.
З версії 4.0.0$index_key parameter added.
З версії 4.7.0Uses WP_List_Util class.

Код wp_list_pluck() WP 6.0.2

function wp_list_pluck( $list, $field, $index_key = null ) {
	if ( ! is_array( $list ) ) {
		return array();
	}

	$util = new WP_List_Util( $list );

	return $util->pluck($field, $index_key);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *