【问题标题】:Change array value globally using function使用函数全局更改数组值
【发布时间】:2011-01-29 02:09:08
【问题描述】:

出于某种原因,我需要调用一个函数来更改数组中的某个值。 但是,从我编写的代码来看,该值仅在函数内部更改,并且在全局范围内保持不变。 不知道我是否错过了一些神奇的东西?

<?php
$test=array(0=>"a",1=>"b");

function myTest(){
$test[0]="c";
print_r ($test);
}

myTest();
print_r($test);
?>

理想情况下,输出应该是, 数组( [0] => c [1] => b ) 数组 ( [0] => c [1] => b )

但是,根据我的代码,结果是 数组 ( [0] => c ) 数组 ( [0] => a [1] => b ) 我没有改变数组值,也丢失了数组[1]。

【问题讨论】:

    标签: php arrays function


    【解决方案1】:

    你需要让你的函数使用global关键字:

    function myTest(){
       global $test;
       $test[0]="c";
       print_r ($test);
    }
    

    【讨论】:

      【解决方案2】:

      虽然您可以轻松(并且懒惰地)使用 global 关键字使其工作,但这是一种非常不鼓励的做法 (search Stack Overflow to find out why)。

      相反,你应该让你的函数接受一个数组作为参数并返回一个修改后的数组作为结果:

      $test = array("a","b");
      
      function myTest(array $test) {
         $test[0] = "c";
      }
      
      $test = myTest($test);
      print_r($test);
      

      将呈现:

      Array (
         [0] => c
         [1] => b
      )
      

      或者,您可以接受数组作为参考并直接处理它(无需返回和重新分配):

      $test = array("a","b");
      
      function myTest(array &$test) {
         $test[0] = "c";
      }
      
      myTest($test);
      print_r($test);
      

      两个示例的输出相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-04
        • 2020-09-04
        相关资源
        最近更新 更多