Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 - Fatal编程技术网

如何在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。