【问题标题】:php: cannot modify array in function?php:不能修改函数中的数组?
【发布时间】:2011-12-08 06:33:31
【问题描述】:

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

<?php

$arr1 = array();

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

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

【问题讨论】:

    标签: php


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 对于 PHP 5.4+,& 已删除。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2011-09-29
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      相关资源
      最近更新 更多