我有一些过滤器:
$filters = array('rooms-4-5', 'city-london-berlin-paris');
Run Code Online (Sandbox Code Playgroud)
我想创建一个这样的数组:
array(
'rooms' => array('4', '5'),
'city' => array('london', 'berlin', 'paris')
);
Run Code Online (Sandbox Code Playgroud)
我试过了:
foreach($filters as $filter):
$filter = explode('-', $filter);
$data[$filter[0]] = array();
array_shift($filter);
foreach($filter as $value):
//here I am stuck ...
endforeach;
endforeach;
Run Code Online (Sandbox Code Playgroud)
你似乎已经相当接近,除了你已经有数组元素的事实,$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);
Run Code Online (Sandbox Code Playgroud)