问题描述
这是我的预编码...
Here is my precode...
$keys = array('a', 'b', 'c', 'd');
$number = 10;
这是我的代码...
eval('$array[\''.implode('\'][\'',$keys).'\'] = $number;');
使用此方法,我得到以下结果...
Using this, I get the following result...
Array (
[a] => Array
(
[b] => Array
(
[c] => Array
(
[d] => 10
)
)
)
)
现在,问题在于这是我想要的确切结果,但我不想使用eval()
.
Now, the problem is that this is the exact result I want, but I don't want to use eval()
.
作为我的代码的输入,我有一个keys
和一个number
的列表. number
应该设置为用于为特定数组$array
生成基于子级的keys
的keys
数组的值.
As input to my code, I have a list of keys
and a number
. The number
should be set to the value of the keys
array being used to generate child-based keys
for a certain array $array
.
有没有其他方法可以实现这一目标?我不想在代码正常工作时用新值覆盖键/数字-eval()
已经保留了它,所以我的新代码应该做同样的事情.
Is there a different way that I can achieve this? I don't want to overwrite the keys/numbers with new values as the code works - eval()
preserves this already, so my new code should do the same.
推荐答案
下面是完整的代码示例,显示了其工作方式.重要的是要使用对数组的引用,以便可以对其进行修改:
Here is a full code example showing how it would work. Whats important is that you use a reference to the array so you can modify it:
<?php
$keys = array('a', 'b', 'c', 'd');
$number = 10;
$org_array = array(
"a" => "string",
"z" => array( "k" => false)
);
function write_to_array(&$array, $keys, $number){
$key = array_shift($keys);
if(!is_array($array[$key])) $array[$key] = array();
if(!empty($keys)){
write_to_array($array[$key], $keys, $number);
} else {
$array[$key] = $number;
}
}
write_to_array($org_array, $keys, $number);
print_r($org_array);
?>
这篇关于动态数组键添加的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!