好的,给出了这个数据结构:
array(
'name one' => 'fred',
'desc one' => 'lorem ipsum'
'name two' => 'charles',
'desc two' => 'lorem ipsum'
);
在php中我如何匹配分配给键ONE或TWO的数值并返回:
array(
'one' => array('name' => 'fred', 'desc' => 'lorem ipsum'),
'two' => array('name' => 'charles' , 'desc => 'lorem ipsum')
);
答案 0 :(得分:5)
这是一个直接的逻辑问题,这就是你如何做到的( 我确信有一个更快的选择,但这完全符合你的需要 ):
$new = array();
foreach($array as $key => $val) {
list($item, $number) = explode(' ', $key);
$new[$number][$item] = $val;
}
我们在上面的示例中使用list()
和explode()
来获取所需的变量。即数字“一”或“两”和项目名称,基本上是“名称”和“desc”。
正如Lajos所说,如果未设置$new[$number]
,此版本将对其进行排序并创建所需的数组:
$new = array();
foreach($array as $key => $val) {
list($item, $number) = explode(' ', $key);
// if the array isn't set
if(!isset($new[$number])) $new[$number] = array();
$new[$number][$item] = $val;
}
答案 1 :(得分:3)
这样的事情:
$target = array();
foreach ($elements as $k => $v) {
$keys = explode(" ", $k);
if (!isset($target[$keys[1]])) {
$target[$keys[1]] = array();
}
$target[$keys[1]][$keys[0]] = $v;
}