Php 声明全局数组
嗨。我最近学习了PHP,并试图声明一个全局数组,以便能够访问函数内部。但我似乎遗漏了一些东西,因为我得到了错误“Undefined variable:” 这是我的密码:Php 声明全局数组,php,globals,Php,Globals,嗨。我最近学习了PHP,并试图声明一个全局数组,以便能够访问函数内部。但我似乎遗漏了一些东西,因为我得到了错误“Undefined variable:” 这是我的密码: global $second_array; $second_array = array(); function operatii($v) { $var1 = $second_array[count($second_array)-1]; $var2 = $second_array[count($second_array)
global $second_array;
$second_array = array();
function operatii($v) {
$var1 = $second_array[count($second_array)-1];
$var2 = $second_array[count($second_array)-2];
$rez = null;
echo $var1 . $var2 . "este?";
}
for ($i = 0; $i < count($a); $i++){
if ($a[$i] === "+" || $a[$i] === "-" || $a[$i] === "*" || $a[$i] === "/" ) {
operatii($a[$i]);
} else {
array_push($second_array, $a[$i]);
}
}
global$second\u数组;
$second_array=array();
功能II($v){
$var1=$second_数组[计数($second_数组)-1];
$var2=$second_数组[计数($second_数组)-2];
$rez=null;
echo$var1.$var2.“este?”;
}
对于($i=0;$i
我似乎能够在for循环中使用$second\u数组
,但无法在operatii函数中使用它。如何解决这个问题?正如大家所建议的,您应该将数组作为函数参数传递。在重大情况下使用globals是一种不好的做法
function operatii($second_array, $v) {
$var1 = $second_array[count($second_array)-1];
$var2 = $second_array[count($second_array)-2];
$rez = null;
echo $var1 . $var2 . "este?";
}
$second_array = array();
for ($i = 0; $i < count($a); $i++) {
if ($a[$i] === "+" || $a[$i] === "-" || $a[$i] === "*" || $a[$i] === "/" ) {
operatii($second_array, $a[$i]);
} else {
array_push($second_array, $a[$i]);
}
}
函数运算符ii($second_数组,$v){
$var1=$second_数组[计数($second_数组)-1];
$var2=$second_数组[计数($second_数组)-2];
$rez=null;
echo$var1.$var2.“este?”;
}
$second_array=array();
对于($i=0;$i
在PHP中引用全局变量有两种方法:
global
关键字$GLOBALS
数组$GLOBALS
数组在一定程度上缓解了此问题
然而,使用globals仍然存在一些问题;在代码中使用太多全局变量通常被认为是不好的做法。在与大量广泛使用globals的遗留系统合作之后,我可以保证,它们会给未来的开发人员带来很多麻烦
使用globals还使得为代码编写正式的测试套件(即单元测试)变得更加困难
因此,我的建议是尽可能避免使用globals。在某些情况下,它们是必需的,但您越能避免它们,而是将变量传递到函数和类中,而不是使它们成为全局变量,情况就越好
因此,总结如下:
如果必须使用globals,请使用$globals['varname']
引用它们,但通常最好不要使用它们
希望这能有所帮助。对于在谷歌搜索中遇到这个老问题的人, 在本例中,变量$second_数组被声明为全局数组,而不是在下一行中创建的数组。要避免这种情况,请确保全局声明位于数组声明之后。我倾向于将全局声明放在函数本身中
$second_array = array();
function operatii($v) {
global $second_array;
$var1 = $second_array[count($second_array)-1];
$var2 = $second_array[count($second_array)-2];
$rez = null;
echo $var1 . $var2 . "este?";
}
for ($i = 0; $i < count($a); $i++){
if ($a[$i] === "+" || $a[$i] === "-" || $a[$i] === "*" || $a[$i] === "/" ) {
operatii($a[$i]);
} else {
array_push($second_array, $a[$i]);
}
}
$second_array=array();
功能II($v){
全局$second_数组;
$var1=$second_数组[计数($second_数组)-1];
$var2=$second_数组[计数($second_数组)-2];
$rez=null;
echo$var1.$var2.“este?”;
}
对于($i=0;$i
如果要在函数内部访问它,请将其作为参数传递。需要在函数内部使用global
关键字,而不是在函数外部。或作为参数传递,或使用$GLOBALS['second\u array']