Php. Как работать с ключами и значениями в array_filters?


В короткой статье приведу пример работы с ключами массива при фильтрации массива при помощи array_filter() на php .

Начиная с версии 5.6 в функции array_filter появилась удобная возможность работы с ключами.

Для этого следует третьим параметром передать одну из констант:
— ARRAY_FILTER_USE_KEY
— ARRAY_FILTER_USE_BOTH

Первая ждет в анонимной функции один параметр и это будет ключ массива. Вторая будет ждать в параметрах анонимки два параметра — ключ и значение.

Приведу примеры со stackoverflow:
ARRAY_FILTER_USE_KEY:

$my_array = ['foo' => 1, 'hello' => 'world'];
$allowed  = ['foo', 'bar'];
$filtered = array_filter(
    $my_array,
    function ($key) use ($allowed) {
        return in_array($key, $allowed);
    },
    ARRAY_FILTER_USE_KEY
);

Как видите анонимка принимает один параметр и ним является ключ.

ARRAY_FILTER_USE_BOTH:

$my_array = ['foo' => 1, 'bar' => 'baz', 'hello' => 'wld'];
$allowed  = ['foo' => true, 'bar' => true, 'hello' => 'world'];
$filtered = array_filter(
    $my_array,
    function ($val, $key) use ($allowed) { // N.b. $val, $key not $key, $val
        return isset($allowed[$key]) && (
            $allowed[$key] === true || $allowed[$key] === $val
        );
    },
    ARRAY_FILTER_USE_BOTH
); // ['foo' => 1, 'bar' => 'baz']

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

На этом всё — удачи!

,

Добавить комментарий

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