I have some filters:
$filters = array('rooms-4-5', 'city-london-berlin-paris');
and I wanna create a array like this:
array(
'rooms' => array('4', '5'),
'city' => array('london', 'berlin', 'paris')
);
I tried:
foreach($filters as $filter):
$filter = explode('-', $filter);
$data[$filter[0]] = array();
array_shift($filter);
foreach($filter as $value):
//here I am stuck ...
endforeach;
endforeach;
You seem to have been fairly close, except for that fact that you already have the array elements in $filter
and you only needed to remove the first variable (by using array_shift()
) and insert it.
The thing is that array_shift()
(link to documentation) returns the removed value so you can store that in the array and use it for the key. And the array after shifting is ready to be used.
Here's the full result:
<?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);