Php 创建动态多维数组
我试图在解析用点分隔的字符串时创建一个数组Php 创建动态多维数组,php,arrays,Php,Arrays,我试图在解析用点分隔的字符串时创建一个数组 $string = "foo.bar.baz"; $value = 5 到 我用语法分析了这些键 $keys = explode(".",$string); 我怎样才能做到这一点?您可以做到: $keys = explode(".",$string); $last = array_pop($keys); $array = array(); $current = &$array; foreach($keys as $key) {
$string = "foo.bar.baz";
$value = 5
到
我用语法分析了这些键
$keys = explode(".",$string);
我怎样才能做到这一点?您可以做到:
$keys = explode(".",$string);
$last = array_pop($keys);
$array = array();
$current = &$array;
foreach($keys as $key) {
$current[$key] = array();
$current = &$current[$key];
}
$current[$last] = $value;
如果这样,您可以很容易地生成一个函数,将字符串和值作为参数传递并返回数组。您可以尝试以下解决方案:
function arrayByString($path, $value) {
$keys = array_reverse(explode(".",$path));
foreach ( $keys as $key ) {
$value = array($key => $value);
}
return $value;
}
$result = arrayByString("foo.bar.baz", 5);
/*
array(1) {
["foo"]=>
array(1) {
["bar"]=>
array(1) {
["baz"]=>
int(5)
}
}
}
*/
这与你可以在这里找到答案的问题有关: 您只需稍微更改一下代码:
$a = explode('.', "foo.bar.baz");
$b = array();
$c =& $b;
foreach ($a as $k) {
$c[$k] = array();
$c =& $c[$k];
}
$c = 5;
print_r($b);
是否总是有3个键或任意数字?它必须与任意数字一起工作number@dev:因为数组是在分配给变量时复制的。如果您不使用引用,它将不起作用。
$a = explode('.', "foo.bar.baz");
$b = array();
$c =& $b;
foreach ($a as $k) {
$c[$k] = array();
$c =& $c[$k];
}
$c = 5;
print_r($b);