如何在php语言中(通过指定的索引)将(任何类型)值添加到数组中


How to add (any type )value to an array(by specified index) in php language

作为标题,我做了如下操作:

$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;
}

当param$result为空数组时,它可以实现结果,但当$result是数组时,会报告错误。错误类似:不能将标量值用作数组。无论如何都能实现吗?首先谢谢!

使用pass-by-reference,而不是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)
      }
    }
  }
}

&放在函数参数之前意味着它将通过引用传递,因此对函数内部变量的修改将影响传递的原始变量。在赋值中使用=&会指定一个引用,因此目标变量是源的别名。