基于密钥的多维数组

时间:2014-08-09 03:31:05

标签: php arrays

有没有一种简单的方法来获取一维数组并根据键中的空格或任何字符将其转换为多维数组?

$arr['foo1'] = 'bar1';
$arr['foo2'] = 'bar2';
$arr['foo3 tier1' ] = 'bar3';
$arr['foo4 tier1' ] = 'bar4';

并将其转换为

$arr['foo1'] = 'bar1';
$arr['foo2'] = 'bar2';
$arr['foo3']['tier1'] = 'bar3';
$arr['foo4']['tier1'] = 'bar4';

1 个答案:

答案 0 :(得分:0)

你总是可以做某种foreach循环

$newarr = array();
foreach ($arr as $key => $value) {
    $output = explode(' ',$key,2);
    if(count($output)) {
       $newarr[$output[0]][$output[1]] = $value;
    } else {
        $newarr[$key] = $value;
    }
}

该代码仅适用于一个空格,但您可以将其扩展到多个空格,例如

function pivot($arr,$delimeter) {
    $return = array();
    foreach ($arr as $key => $value) {
        $output = explode($delimeter,$key,2);
        if(count($output)) {

           if(strpos($output[1],$delimeter) > 0) {
                $return[$output[0]] = pivot(array($output[1]=>$value),$delimeter);
           } else {
               $return[$output[0]][$output[1]] = $value;
           }
        } else {
           $return[$key] = $value;
        }
    }
    return $return;
}