好的,给定这个数据结构:
array(
'name one' => 'fred',
'desc one' => 'lorem ipsum'
'name two' => 'charles',
'desc two' => 'lorem ipsum'
);
Run Code Online (Sandbox Code Playgroud)
在PHP中我如何匹配分配给键ONE或TWO的数值并返回:
array(
'one' => array('name' => 'fred', 'desc' => 'lorem ipsum'),
'two' => array('name' => 'charles' , 'desc => 'lorem ipsum')
);
Run Code Online (Sandbox Code Playgroud)
这是一个直接的逻辑问题,这就是你如何做到的(我确信有一个更快的选择,但这完全符合你的需要):
$new = array();
foreach($array as $key => $val) {
list($item, $number) = explode(' ', $key);
$new[$number][$item] = $val;
}
Run Code Online (Sandbox Code Playgroud)
我们使用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;
}
Run Code Online (Sandbox Code Playgroud)