如何将一维数组转换为二维数组?

3

我有一个数组,来自一个表单,包含多语言数据,如下所示:

Array
(
    [en_name] => ...........
    [en_description] => ...........
    [gr_name] => ...........
    [gr_description] => ...........
)

这个数组如何转换为二维数组呢?
Array
(
    [en] => Array
        (
            [name] => ...........
            [description] => ...........
        )

    [gr] => Array
        (
            [name] => ...........
            [description] => ...........
        )
)

2
索引是否总是遵循上面显示的命名约定? - diggersworld
是的,索引始终是两个字母的语言代码,第二级索引如名称、描述、价格等。 - Nikos
3个回答

4
请使用以下代码:
$finalArr = array();
foreach($arr as $key => $val) {
   $tok = explode('_', $key);
   $finalArr[$tok[0]][$tok[1]] = $val;
}

2
我本来也想建议同样的事情,但你比我先说了。 :) - diggersworld
那很好。非常感谢您的快速回答! - Nikos

1
请尝试以下内容。
$output = array();
foreach($arr as $val){
            $prefix = str_replace("_","",substr($val,0,3));
            $ending = substr($val,3,strlen($val));
            if(!is_array($output[$prefix]))
                 $output[$prefix] = array();
            array_push($output[$prefix],$ending);    
        }

1
$array3d = array();
foreach($arr as $key => $value) {
    $keyArr = explode("_", $key);
    $array3d[$keyArr[0]][$keyArr[1]] = $value;
}

只要每个键只有一个下划线,那就应该能够正常工作。

这个完全正确,就像上面的答案一样。抱歉我记不得谁先回复了!谢谢!附言:我也订阅了你的RSS。 - Nikos
@anubhava 到达约1分钟之前! - Matt Cain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接