0
81
2015-07-21

WordPress - Фильтрация по атрибутам благодаря wp_filter_object_list()

Функция WordPress которая позволяет легко фильтровать массив объектов на основе предоставленных атрибутов. Другими словами, вы можете указать критерии соответствия и получить подмножество данных благодаря wp_filter_object_list()
Понравилась страница? Поставь свою оценку!
PLUGIN_STAR_RATINGS.SCORE_TEXTPLUGIN_STAR_RATINGS.VOTES_TEXT

Обзор функций wp_filter_object_list()

wp_filter_object_list( array $list, array $args = array(), string $operator = 'and', bool|string $field = false )

$ list (array) (обязательно) - массив объектов для фильтрации

$ args (array) (Необязательно) Массив аргументов key => value для сопоставления с каждым объектом. Значение по умолчанию: array ()

$ operator (string) (Необязательно) Логическая операция для выполнения: 'or' означает, что должен соответствовать только один элемент из массива, 'and' означает, что все элементы должны совпадать, а 'not' означает, что ни один элемент не должен совпадать. Значение по умолчанию: «и»

$ field (bool | string) (Необязательно) Поле из объекта для размещения вместо всего объекта. Значение по умолчанию: false

Образец использования

Давайте начнем с массива объектов:

$list = array(
(object) array( 'name' => 'John', 'gender' => 'male', 'job' => 'Farmer' ),
(object) array( 'name' => 'Paul', 'gender' => 'male', 'job' => 'Blacksmith' ),
(object) array( 'name' => 'Adam', 'gender' => 'male', 'job' => '' ),
(object) array( 'name' => 'Mike', 'gender' => 'male', 'job' => '' ),
(object) array( 'name' => 'Jane', 'gender' => 'female', 'job' => 'Baker' ),
(object) array( 'name' => 'Jill', 'gender' => 'female', 'job' => 'Farmer' ),
);

Сначала давайте возьмем все объекты из нашего списка:

$unemployed = wp_filter_object_list( $list, array('job' => '') );

Результатом будет список всех объектов, в которых поле 'job' пусто:

array
2 =>
    object(stdClass)
        public 'name' => string 'Adam'
        public 'gender' => string 'male'
        public 'job' => string ''
3 =>
    object(stdClass)
        public 'name' => string 'Mike'
        public 'gender' => string 'male'
        public 'job' => string ''

Если вы хотите получить список всех фермеров, просто обновите значение для поля «job»:

$farmers = wp_filter_object_list( $list, array( 'job' => 'Farmer' ) );

Вы также можете отфильтровать результаты по нескольким атрибутам:

$female_farmers = wp_filter_object_list( $list, array( 'job' => 'Farmer', 'gender' => 'female' ) );

Это вернет список людей, которые являются как женщинами, так и фермерами, в данном случае это будет просто Джилл.

Оператор «and» используется по умолчанию. Однако вы также можете использовать оператор 'or', чтобы получить более широкий набор данных:

$females_or_farmers = wp_filter_object_list( $list, array( 'job' => 'Farmer', 'gender' => 'female' ), 'or' );

Это вернет список людей, которые являются женщинами или фермерами, которые в этом случае будут Джон, Джейн и Джилл.

Если вы хотите отфильтровать результаты и вернуть массив, который имеет только определенное поле (например, «имя»), просто укажите имя поля в качестве четвертого аргумента:

$has_job = wp_filter_object_list( $list, array( 'job' => '' ), 'not', 'name' );

Результат будет:

array( 'John', 'Paul', 'Jane', 'Jill' );




Статья была переведена для блога TechBlog.SDStudio.top

Источник: wpscholar.com