按键字符串分组数组值?

vim*_*984 3 php regex arrays

好的,给定这个数据结构:

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)

Dar*_*ren 5

这是一个直接的逻辑问题,这就是你如何做到的(我确信有一个更快的选择,但这完全符合你的需要):

$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)

例