Как оставить в массиве значения начинающиеся с определенного слова?

Рейтинг: 1Ответов: 1Опубликовано: 08.02.2023
$post_list = [
    'filter_color'      => true,
    'filter_storage'    => true,
    'filter_ram'        => true,
    'filter_used'       => true,
    'filter_brand'      => true,
];

Есть массив с данными, мне нужно оставить только значение начинающееся с filter_* Как это можно сделать, помогите пожалуйста

Ответы

▲ 1Принят
$post_list = [
    'color_filter'      => true,
    'filter_color'      => true,
    'filter_storage'    => true,
    'filter_ram'        => true,
    'filter_used'       => true,
    'filter_brand'      => true,
];

$post_list = array_filter($post_list, function ($key) {
    return strpos($key, 'filter_') === 0;
}, ARRAY_FILTER_USE_KEY);

var_dump($post_list);

// вывод:
//array(5) {
//  ["filter_color"]=>
//  bool(true)
//  ["filter_storage"]=>
//  bool(true)
//  ["filter_ram"]=>
//  bool(true)
//  ["filter_used"]=>
//  bool(true)
//  ["filter_brand"]=>
//  bool(true)
//}