atom1c.ru
Связаться со мной

Как использовать функцию PHP array_filter() для фильтрации по ключам?

Чтобы использовать функцию PHP array_filter() для фильтрации элементов массива по ключу, а не по значению, можно передать флаг ARRAY_FILTER_USE_KEY в качестве третьего аргумента функции. В этом случае ключ будет передан в качестве единственного аргумента в предоставленную функцию обратного вызова.

Например, для фильтрации числовых индексов в массиве, имеющем как числовые, так и ассоциативные ключи, можно поступить следующим образом:


$arr = [
    'foo' => 'bar',
    1 => 'baz',
    'qux' => 22,
    3 => 123,
    'quux' => 'quuz',
];

$filteredArr = array_filter(
    $arr,
    fn ($key) => is_numeric($key),
    ARRAY_FILTER_USE_KEY
);

echo print_r($filteredArr, true); // [1 => 'baz', 3 => 123]

Как видно из результата, ключи массива сохраняются (что может привести к появлению пробелов в индексированном массиве, что и произошло в данном примере). Однако можно переиндексировать массив (например, с помощью функции array_values()).