У меня есть динамический массив. Я показал здесь один экземпляр этого массива. Хотя он not fixed how many keys присутствует

Array
(
    [lowest] => 1200
    [highest] => 139900
    [cat_0] => Womens Clothing
    [cat_1] => Smart Phones
    [cat_2] => Mens Clothing
    [cat_3] => Electronics
    [chil_cat_0] => 18
    [chil_cat_1] => 12
    [chil_cat_2] => 7
    [chil_cat_3] => 11
    [chil_cat_4] => 17
    [keyword] => 
)

Для этого массива я хочу создать подмассив… как.

Array
(
    [cat_0] => Womens Clothing
    [cat_1] => Smart Phones
    [cat_2] => Mens Clothing
    [cat_3] => Electronics
)

Примечание: на основе похожих ключей, я должен разбить свой основной массив на подмассив

Однако в основном массиве может быть любое количество похожих строк.

Пожалуйста, помогите мне.

0
Ahsit Tamang 8 Мар 2018 в 10:01

1 ответ

Лучший ответ

Вы можете использовать array_filter(), чтобы сохранить только значения, соответствующие нужным вам ключам:

$out = array_filter($array, function($key){
    // Keep only keys that begins by 'cat_'
    return substr($key, 0, 4) == 'cat_' ; 
    // or
    return preg_match('~^cat_[\d]+~',$key) ; // Use cat_ + number
}, ARRAY_FILTER_USE_KEY);
print_r($out);

Выходы:

Array
(
    [cat_0] => Womens Clothing
    [cat_1] => Smart Phones
    [cat_2] => Mens Clothing
    [cat_3] => Electronics
)
1
Syscall 8 Мар 2018 в 10:16