PHP - 声明一个全局数组

时间:2017-02-22 13:44:58

标签: php arrays global-variables

当我尝试在函数中使用数组时,我遇到了未定义变量的问题。一个例子是下面的代码。如何才能访问函数$prev中的数组hello()?我尝试过搜索,但当变量是​​一个数组时,我真的不知道如何使用$GLOBALS[$varname]。谢谢你的帮助!

<?php

$prev = [0,1,2];

function hello(){

    echo $prev[1];

}

hello();
hello();
hello();

?>

4 个答案:

答案 0 :(得分:8)

您也可以将变量传递给函数:     

$prev = [0,1,2];

function hello(array $array){

    echo $array[1];

}

hello($prev);
hello($prev);
hello($prev);

?>

另一种方法是传递变量by reference

function hello(&$array){

    $array[1]++;
    echo $array[1];

}

答案 1 :(得分:5)

这是将其用作全局的方式。顺便说一下,还有其他方法可以在hello函数中使用它。

$prev = [0,1,2];

function hello(){
    global $prev;

    echo $prev[1];

}

hello();
hello();
hello();

答案 2 :(得分:3)

您可以执行以下操作:

$GLOBALS["prev"] = [0,1,2];
function hello(){    
    echo $GLOBALS['prev'][1];    
}

hello();

但是请考虑做类似的事情:

 $prev = [1,2,3];
 function hello($prev) {
      echo $prev[1];
 }
 hello($prev);

作为替代解决方案:

class GlobalsContainer {
     public static $prev=[1,2,3];
}

function hello() {
     echo GlobalsContainer::$prev[1];
}
hello();

答案 3 :(得分:0)

global内声明带有function关键字的数组。看到它 -

<?php

    function hello(){

        global $prev = [0,1,2];
        echo $prev[1];

    }


    ?>