当我尝试在函数中使用数组时,我遇到了未定义变量的问题。一个例子是下面的代码。如何才能访问函数$prev
中的数组hello()
?我尝试过搜索,但当变量是一个数组时,我真的不知道如何使用$GLOBALS[$varname]
。谢谢你的帮助!
<?php
$prev = [0,1,2];
function hello(){
echo $prev[1];
}
hello();
hello();
hello();
?>
答案 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];
}
?>