如何在php语言中将(任何类型)值添加到数组(通过指定的索引)
作为标题,我是这样做的:如何在php语言中将(任何类型)值添加到数组(通过指定的索引),php,arrays,Php,Arrays,作为标题,我是这样做的: $array=array(0,1,2,3); $result=array(); function makeArray($array,$result,$value){ $str='$result'; for ($i=0;$i<count($array);$i++){ $str.='['.$i.']'; } $str.='="'.$value.'";'; eval($str); return $result; } $array=array(0,1,2,3);
$array=array(0,1,2,3);
$result=array();
function makeArray($array,$result,$value){
$str='$result';
for ($i=0;$i<count($array);$i++){
$str.='['.$i.']';
}
$str.='="'.$value.'";';
eval($str);
return $result;
}
$array=array(0,1,2,3);
$result=array();
函数makeArray($array,$result,$value){
$str='$result';
对于($i=0;$i使用参考传递,而不是eval
:
function makeArray($indexes, &$result, $value) {
$here =& $result;
foreach ($indexes as $i) {
if (!(isset($here[$i]) && is_array($here[$i]))) {
$here[$i] = array();
}
$here =& $here[$i];
}
$here = $value;
}
$array=array(0,1,2,3);
$result=array();
makeArray($array, $result, 3);
var_dump($result);
输出:
array(1) {
[0]=>
array(1) {
[1]=>
array(1) {
[2]=>
array(1) {
[3]=>
int(3)
}
}
}
}
将&
放在函数参数之前意味着它将通过引用传递,因此对函数内变量的修改将影响传递的原始变量。在赋值中使用=&
分配引用,因此目标变量是源变量的别名。正在创建的字符串ke$result[0][1][2][3]=$value
就是这个意思吗?…然后放下这个值…你会伤害到别人的。为什么要这样做?如果你想将数组传递给函数并让它修改数组,请通过引用传递它。是的,$result[0][1][2][3]=$value这就是我想要的。我想要为动态深度索引数组添加值。我有一个菜单,其中一些有子菜单,但我需要在递归所有菜单时进行检查。我对它没有很好的想法。如果你对此感兴趣,请给我发封电子邮件,我将源文件发布给你。再次感谢!我真正想要的是为数组添加动态深度索引。不是一维的,但是有很多维数组。我已经重写了这个函数,将索引用作深度索引。这个问题困扰着我,有一天,你处理了它。太棒了!!我将用PHP深入学习。谢谢Barmar。