php:无法在函数中修改数组?

时间:2011-12-08 06:33:31

标签: php

所以我试图通过在函数modArr中添加键和值来修改数组;我希望var转储显示添加的项目,但我得到NULL。我在这里错过了什么步骤?

<?php

$arr1 = array();

modArr($arr1);
$arr1['test'] = 'test';
var_dump($arr);

function modArr($arr){
$arr['item1'] = "value1";
$arr['item2'] = "value2";
return;
}

2 个答案:

答案 0 :(得分:14)

您正在修改函数范围中存在的数组,而不是全局范围。您需要从函数返回修改后的数组,使用global关键字(不推荐)或通过引用将数组传递给函数而不是值。

// pass $arr by reference
$arr = array();
function modArr(&$arr) {
  // do stuff
}

// use global keyword
$arr = array();
function modArr($arr) {
  global $arr;
  //...
}

// return array from function
$arr = array();
function modArr($arr) {
  // do stuff to $arr
  return $arr;
}
$arr = modArr($arr);

要了解有关变量范围的更多信息,请查看PHP docs on the subject

答案 1 :(得分:3)

您必须通过引用传递$arrfunction modArr(&$arr)

修改:您的代码中发现了错误:您正在传递modArr($arr1);,但尝试输出$arr