Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将字符串键数组转换为多键数组_Php_Arrays_Key - Fatal编程技术网

PHP将字符串键数组转换为多键数组

PHP将字符串键数组转换为多键数组,php,arrays,key,Php,Arrays,Key,我有这个阵列: $array['a.b.c'] = 'x'; $array['a.b.d'] = 'y'; $array['e.f'] = 'z'; $array['a']['b']['c'] = 'x'; $array['a']['b']['d'] = 'y'; $array['e']['f'] = 'z'; 要转换为此阵列的内容: $array['a.b.c'] = 'x'; $array['a.b.d'] = 'y'; $array['e.f'] = 'z'; $array['a']

我有这个阵列:

$array['a.b.c'] = 'x';
$array['a.b.d'] = 'y';
$array['e.f'] = 'z';
$array['a']['b']['c'] = 'x';
$array['a']['b']['d'] = 'y';
$array['e']['f'] = 'z';
要转换为此阵列的内容:

$array['a.b.c'] = 'x';
$array['a.b.d'] = 'y';
$array['e.f'] = 'z';
$array['a']['b']['c'] = 'x';
$array['a']['b']['d'] = 'y';
$array['e']['f'] = 'z';
在PHP中有什么快速的方法吗

谢谢
O.

这里有一种方法,使用一个
foreach
遍历数组的每个键,分解它,并使用分解后的值作为新数组的键:

$result = array();

foreach($array as $key => $value) {
    $new_keys = explode('.',$key);
    $last_key = array_pop($new_keys); //remove last key from $new_keys 
    $a =& $result; //make $a and $result be the same variable

    foreach($new_keys as $new_key) {
        if(!isset($a[$new_key])) {
            $a[$new_key] = array();
        }

        $a =& $a[$new_key]; //reset $a to $a[$new_key]
    }

    $a[$last_key] = $value; //put $value in the last key
}

print_r($result);

Period上的Foreach循环exlode键可以将其转换为字符串、重新生成并使用:
$arr_str=“new[”。内爆(“][”,分解(“.”),键($arr))。“]=”。当前($arr);parse_str($arr_str);印刷(新)参见