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

时间:2013-07-26 05:09:21

标签: 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;
}

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

1 个答案:

答案 0 :(得分:0)

使用传递参考,而不是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)
      }
    }
  }
}

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