0

在我的函数上无法读取全局变量。有人知道我下面的代码有什么问题吗?请帮我。

<?php
global $a = array(2,3,4); 
global $b = array(3,5,6); 

function test(){
        $y = $a[0]*$b[0];
        return $y;
}
test();
?>
4

4 回答 4

1
<?php
$a = array(2,3,4); 
$b = array(3,5,6); 

function test(){
GLOBAL $a;
GLOBAL $b;
        $y = $a[0]*$b[0];
        return $y;
}
test();
?>
于 2013-05-18T04:36:50.323 回答
1

您似乎对全局变量有一些误解。

您没有将变量声明为全局 .. 而是告诉 php 您要使用不在函数范围内的变量

所以你的代码将是

<?php
  $a = array(2,3,4); 
  $b = array(3,5,6); 

function test()
{
    global $a, $b;
    $y = $a[0]*$b[0];
    // or you can use $GLOBAL['a'][0] * $GLOBAL['b'][0]
    return $y;
 }
echo test();
 ?>

现在使用此代码,您说的是使用变量$a并且$b在函数范围之外定义。

文档

希望它可以帮助你,你明白我想说什么

于 2013-05-18T04:46:27.180 回答
0

首先,您必须声明全局。

global $a;

然后你可以把它变成一个数组。

$a = array(2,3,4);

另外,如果您使用的是函数。在函数内部声明全局,而不是在函数外部。

<?php
$a = array(2,3,4); 
$b = array(3,5,6); 

$output = test($a,$b);
echo $output;

function test($array1,$array2)
{
$y = $array1[0]*$array2[0];
return $y;
}
?>

这里给你解释一下。我们在哪里:

function test($array1,$array2)

我们是说当函数被调用时放在这些位置的任何值都被视为函数内部的 $array1 和 $array2 。

所以当我们调用它时我们说 test($a,$b) 所以当函数运行时 $array1 == $a 和 $array2 == $b。

在函数内部,变量 $a 和 $b 基本上变成了 $array1 和 2。

返回值使函数调用基本上等同于函数外部的返回,因此:

$output = test($a,$b);

就像说:

$output = 6;

我希望这会有所帮助。

于 2013-05-18T04:36:19.443 回答
0

使用global关键字在范围内包含变量。

这是您提供的代码段的外观。

$a = array(2, 3, 4); 
$b = array(3, 5, 6); 

function test() {
    // include $a and $b in the scope of this function.
    global $a, $b;

    $y = $a[0] * $b[0];

    return $y;
}

访问上面提供的文档链接以查看global关键字的更多语法。

您还可以使用$GLOBALS数组来访问ab

$y = $GLOBALS['a'][0] * $GLOBALS['b'][0];
于 2013-05-18T04:39:55.300 回答