Функция wp_array_slice_assoc: извлечение части ассоциативного массива

WP_ARRAY_SLICE_ASSOC() │ WP 3.1.0

Функция wp_array_slice_assoc позволяет извлекать часть ассоциативного массива, основываясь на заданных ключах.

  • Время выполнения — 0.000017 сек (очень быстро) | 50000 раз — 0.08 сек (световая скорость)
  • PHP 7.0.4, WP 4.4.2

Возвращаемое значение

Функция возвращает массив, содержащий указанные элементы.

Использование

wp_array_slice_assoc( $input_array, $keys );
  • $input_array (array) (обязательный) — исходный массив.
  • $keys (array) (обязательный) — список ключей, которые нужно оставить.

Примеры

Пример 1: Оставляем только необходимые элементы из массива

В этом примере показано, как работает данная функция. У нас есть массив, и мы хотим оставить только указанные элементы по ключам.

$array = [
    'one' => '1one',
    'two' => '2two',
    'three' => '3three',
];

$needed_keys = array('one', 'three');
$filtered = wp_array_slice_assoc($array, $needed_keys);

print_r($filtered);

/* Получаем:
Array
(
    [one] => 1one
    [three] => 3three
)
*/

Также это можно сделать с помощью функции array_intersect_key() в PHP:

$filtered = array_intersect_key($array, array_flip($needed_keys));

Пример 2: Использование функции ARRAY_INTERSECT()

Данная функция оставляет элементы из первого массива, значения которых совпадают со значениями второго массива. Сравнение происходит только по значениям.

$array = [
    'one' => '1one',
    'two' => '2two',
    'three' => '3three',
];

$needed_keys = array('' => '1one', 'one' => '');
$filtered = array_intersect($array, $needed_keys);

print_r($filtered);

/* Получаем:
Array
(
    [one] => 1one
)
*/

Пример 3: Использование функции ARRAY_INTERSECT_ASSOC()

Эта функция оставляет элементы из первого массива, причем значения и ключи должны совпадать со значениями и ключами второго массива.

$array = [
    'one' => 'foo',
    'two' => 'bar',
    'three' => 'baz',
];

$needed_keys = array('one' => 'foo', 'three');
$filtered = array_intersect_assoc($array, $needed_keys);

print_r($filtered);

/* Получаем:
Array
(
    [one] => foo
)
*/

Изменения

Функция была введена в версии 3.1.0.

Код функции

Ниже представлен код функции wp_array_slice_assoc:

function wp_array_slice_assoc($input_array, $keys) {
    $slice = array();

    foreach ($keys as $key) {
        if (isset($input_array[$key])) {
            $slice[$key] = $input_array[$key];
        }
    }

    return $slice;
}

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

Сопутствующие функции

Вот некоторые функции, которые могут помочь при работе с массивами в WordPress:

  • apply_filters_ref_array()
  • wp_filter_object_list()
  • wp_is_numeric_array()
  • wp_list_filter()
  • wp_list_pluck()
  • wp_list_sort()

Если у вас возникли вопросы, не стесняйтесь задавать их!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *