У меня есть фильтры:
$filters = array('rooms-4-5', 'city-london-berlin-paris');
и я хочу создать такой массив:
array(
'rooms' => array('4', '5'),
'city' => array('london', 'berlin', 'paris')
);
Я пытался:
foreach($filters as $filter):
$filter = explode('-', $filter);
$data[$filter[0]] = array();
array_shift($filter);
foreach($filter as $value):
//here I am stuck ...
endforeach;
endforeach;
Вы, кажется, были довольно близки, за исключением того факта, что у вас уже есть элементы массива в $filter
и вам нужно только удалить первую переменную (используя array_shift()
) и вставить ее.
Дело в том, что array_shift()
(ссылка на документацию) возвращает удаленное значение, чтобы вы могли сохранить это в массиве и использовать его для ключа. И массив после переключения готов к использованию.
Здесь полный результат:
<?php
$filters = array('rooms-4-5', 'city-london-berlin-paris');
$out = array();
foreach($filters as $filter) {
$filter_exploded = explode('-',$filter);
$val = array_shift($filter_exploded); // remove first element, add it to the variable
$out[$val] = $filter_exploded;
}
var_dump($out);
new-work
?