В короткой статье приведу пример работы с ключами массива при фильтрации массива при помощи 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']
В этом примере анонимка принимает два параметра значение и ключ, которые можно использовать для фильтрации.
На этом всё — удачи!