好的给定这个数据结构:
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')
);
这是一个直截了当的逻辑问题,这就是你如何做的(我确信有一个更快的替代方案,但这正是你需要的 ):
$new = array();
foreach($array as $key => $val) {
list($item, $number) = explode(' ', $key);
$new[$number][$item] = $val;
}
我们使用 list()
和 explode()
在上面的示例中获取所需的变量。即数字“一”或“二”和项目名称,本质上是“名称”和“描述”。
Example
编辑
正如 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;
}
Example