我定义的PHP函数不起作用

时间:2015-01-27 00:44:01

标签: php

如果$ a(来自$ _POST超级全局)的输入大于定义的最大值($ max1和$ max2),我希望我的页面显示错误消息“lorem ipsum”。所以这就是我所做的:

$max1 = 2.7432;
$max2 = 274.32;
$a = $_REQUEST['a'];

    function maximum(){
        if ($a>$max1 || $a>$max2){
            echo "<script language=javascript> alert(\"Lorem Ipsum\");</script>";
            return maximum();
            } 
        }

然后我就像这样调用函数:

 if(($fred=="fred") && ($george=="george") {    
            //check validity of input first by calling maximum;
            maximum();
}

这不起作用!我究竟做错了什么?

2 个答案:

答案 0 :(得分:4)

这是一个范围问题。 $a$max1$max2不在您的函数范围内。您需要将其作为参数传递给它,使其在您的函数中可用(即在范围内)。

此外,您的功能不起作用。简而言之,您需要从函数中返回字符串,然后在调用函数时捕获或回显它。

$max1 = 2.7432;
$max2 = 274.32;
$a = $_REQUEST['a'];

function maximum($a, $max1, $max2){
    if ($a>$max1 || $a>$max2){
        return "<script language=javascript> alert(\"Lorem Ipsum\");</script>";
    } 
}

if(($fred=="fred") && ($george=="george")) {    
    //check validity of input first by calling maximum;
    echo maximum($a, $max1, $max2);
}

答案 1 :(得分:0)

请改变你的功能,如下所示,并检查评论你做了什么错误

    function maximum()
    {
        global $max1,$max2,$a;//make $a,$max1,$max2 available inside this function
        if ($a > $max1 || $a > $max2) {
            echo "<script language=javascript> alert(\"Lorem Ipsum\");</script>";
            //return maximum(); remove this line. Otherwise itwill go infinte loop
        }
    }

http://php.net/manual/en/language.variables.scope.php