wp_array_slice_assoc()WP 3.1.0

Оставляет элементы из первого массива, ключи (индексы) которых совпадают со значениями второго массива.

Делает тоже самое что array_intersect_key( $array1, $array2 ), только сравнивает ключи первого массива со значениями второго.

В PHP есть похожие функции:

Для противоположного вычисления, когда в первом массиве нужно оставить только те элементы, которых нет во втором массиве используйте PHP функции:

1 раз — 0.000017 сек (очень быстро) | 50000 раз — 0.08 сек (скорость света) | PHP 7.0.4, WP 4.4.2

Хуков нет.

Возвращает

Массив. Кусок переданного массива с нужными элементами.

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

wp_array_slice_assoc( $array, $keys );
$array(массив) (обязательный)
Оригинальный массив, элементы которого нужно получить.
$keys(массив) (обязательный)
Список ключей $array которые нужно оставить.

Примеры

0

#1 Оставим только нужные элементы из переданного массива

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

$array = [
	'one' => 'один',
	'two' => 'два',
	'three' => 'три',
];

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

print_r( $filtered );

/* получим
Array
(
	[one] => один
	[three] => три
)
*/

Тоже самое можно сделать в PHP через array_intersect_key():

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

#2 Пример работы array_intersect()

Оставляет элементы из первого массива, значения которых совпадают со значениями второго массива.

Т.е. сравниваются только значения

$array = [
	'one' => 'один',
	'two' => 'два',
	'three' => 'три',
];

$needed_keys = array( ''=>'один', 'one'=>'' );
$filtered = array_intersect( $array, $needed_keys );

print_r( $filtered );

/* получим
Array
(
	[one] => один
)
*/
0

#3 Пример работы array_intersect_assoc()

Оставляет элементы из первого массива, значения и индексы которых совпадают со значениями и индексами второго массива.

$array = [
	'one' => 'один',
	'two' => 'два',
	'three' => 'три',
];

$needed_keys = array( 'one'=>'один', ''=>'два' );
$filtered = array_intersect_assoc( $array, $needed_keys );

print_r( $filtered );

/* получим
Array
(
	[one] => один
)
*/

Список изменений

С версии 3.1.0 Введена.

Код wp_array_slice_assoc() WP 6.5.2

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;
}