不能在函数中修改数组


php: cannot modify array in function?

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

<?php
$arr1 = array();
modArr($arr1);
$arr1['test'] = 'test';
var_dump($arr);
function modArr($arr) {
    $arr['item1'] = "value1";
    $arr['item2'] = "value2";
    return;
}

您正在修改数组,因为它存在于函数作用域中,而不是全局作用域中。您需要从函数返回修改后的数组,使用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文档

你必须通过$arr参考:function modArr(&$arr)

edit:注意到代码中的错误:您正在传递modArr($arr1);,但试图输出$arr