В WordPress есть удобные функции для работы с массивом объектов или массивов. Создадим массив, работа с которым будет рассмотрена далее:
wp_list_filter позволяет фильтровать массив на основе набора пар ключ => значение
Аргументы:
wp_list_pluck позволяет:
wp_filter_object_list позволяет применить wp_list_filter, затем wp_list_pluck
в WordPress 4.7 было добавлена новая функция wp_list_sort, которая позволяет сортировать массив:
В WordPress 4.7 также появился новый класс WP_List_Util, позволяющий применять рассмотренные функции в определенной последовательности. Например, функция wp_filter_object_list может делать следующее (при передаче соответствующих аргументов):
$array = array (
array ( 'order' => 5, 'title' => 'five' ),
array ( 'order' => 3, 'title' => 'three' ),
array ( 'order' => 1, 'title' => 'two' ),
array ( 'order' => 1, 'title' => 'one' ),
array ( 'order' => 4, 'title' => 'four' ),
);
array ( 'order' => 5, 'title' => 'five' ),
array ( 'order' => 3, 'title' => 'three' ),
array ( 'order' => 1, 'title' => 'two' ),
array ( 'order' => 1, 'title' => 'one' ),
array ( 'order' => 4, 'title' => 'four' ),
);
wp_list_filter позволяет фильтровать массив на основе набора пар ключ => значение
Аргументы:
- фильтруемый массив
- массив условий в форме пар ключ => значение
- оператор: AND (по умолчанию), OR, NOT
// ключ 'title' равен 'four'
$result = wp_list_filter( $array, array( 'title' => 'four' ) );
array (
array ( 'order' => 4, 'title' => 'four' ),
);
// ключ 'order' не равен 1
$result = wp_list_filter( $array, array( 'order' => 1 ), 'NOT' );
array (
array ( 'order' => 5, 'title' => 'five' ),
array ( 'order' => 3, 'title' => 'three' ),
array ( 'order' => 4, 'title' => 'four' ),
);
$result = wp_list_filter( $array, array( 'title' => 'four' ) );
array (
array ( 'order' => 4, 'title' => 'four' ),
);
// ключ 'order' не равен 1
$result = wp_list_filter( $array, array( 'order' => 1 ), 'NOT' );
array (
array ( 'order' => 5, 'title' => 'five' ),
array ( 'order' => 3, 'title' => 'three' ),
array ( 'order' => 4, 'title' => 'four' ),
);
wp_list_pluck позволяет:
- взять определенное свойство из каждого объекта, находящегося в массиве
- взять определенный элемент из каждого массива, находящегося а массиве
$result = wp_list_pluck( $array, 'title' );
array ( 'five', 'three', 'two', 'one', 'four' );
array ( 'five', 'three', 'two', 'one', 'four' );
wp_filter_object_list позволяет применить wp_list_filter, затем wp_list_pluck
в WordPress 4.7 было добавлена новая функция wp_list_sort, которая позволяет сортировать массив:
- массивов, по ключу из этих массивов
- объектов, по свойству из этих объектов
// сортировка по ключу 'order'
$result = wp_list_sort( $array, 'order', 'ASC');
array (
array ( 'order' => 1, 'title' => 'two' ),
array ( 'order' => 1, 'title' => 'one' ),
array ( 'order' => 3, 'title' => 'three' ),
array ( 'order' => 4, 'title' => 'four' ),
array ( 'order' => 5, 'title' => 'five' ),
);
// сортировка по ключу 'order', затем по ключу 'title'.
$result = wp_list_sort( $array, array( 'order' => 'ASC', 'title' => 'ASC' ) );
array (
array ( 'order' => 1, 'title' => 'one' ),
array ( 'order' => 1, 'title' => 'two' ),
array ( 'order' => 3, 'title' => 'three' ),
array ( 'order' => 4, 'title' => 'four' ),
array ( 'order' => 5, 'title' => 'five' ),
);
$result = wp_list_sort( $array, 'order', 'ASC');
array (
array ( 'order' => 1, 'title' => 'two' ),
array ( 'order' => 1, 'title' => 'one' ),
array ( 'order' => 3, 'title' => 'three' ),
array ( 'order' => 4, 'title' => 'four' ),
array ( 'order' => 5, 'title' => 'five' ),
);
// сортировка по ключу 'order', затем по ключу 'title'.
$result = wp_list_sort( $array, array( 'order' => 'ASC', 'title' => 'ASC' ) );
array (
array ( 'order' => 1, 'title' => 'one' ),
array ( 'order' => 1, 'title' => 'two' ),
array ( 'order' => 3, 'title' => 'three' ),
array ( 'order' => 4, 'title' => 'four' ),
array ( 'order' => 5, 'title' => 'five' ),
);
В WordPress 4.7 также появился новый класс WP_List_Util, позволяющий применять рассмотренные функции в определенной последовательности. Например, функция wp_filter_object_list может делать следующее (при передаче соответствующих аргументов):
// исключить элементы с ключом 'order' равным 1, затем выбрать значения по ключу 'title'
$util = new WP_List_Util( $array );
$util->filter( array( 'order' => 1 ), 'NOT' );
$util->pluck( 'title' );
$result = $util->get_output();
array ( 'five', 'three', 'four' );
$util = new WP_List_Util( $array );
$util->filter( array( 'order' => 1 ), 'NOT' );
$util->pluck( 'title' );
$result = $util->get_output();
array ( 'five', 'three', 'four' );
Комментариев нет:
Отправить комментарий