函数调用似乎没有传递变量

时间:2015-10-05 17:24:31

标签: php

好的,所以我有一个功能可以根据页面ID生成上一个/下一个链接,它之前有效,但现在却没有。 switch语句中使用的所有必要变量都是在调用它们的函数之前定义的。这是生成链接的功能:

function generateNavbar(){
//Name and number
$name = preg_replace("#[\d]#", "", strval($_GET["id"]));
$num = preg_replace("#[^\d]#", "", strval($_GET["id"]));

$maxNum = getMaxPage($name);

//Print the nav links
echo "<br><br><center><b>";
if(intval($num) > 1) echo "<a href=\"?id=" . $name . (intval($num) - 1) . "\"><< PREV</a>";
if(intval($num) > 1 && intval($num) < intval($maxNum)) echo " | ";
if(intval($num) < intval($maxNum)) echo "<a href=\"?id=" . $name . (intval($num) + 1) . "\">NEXT >></a>";
echo "</b></center>";
};

以下是获得最大值的功能:

function getMaxPage($name){
//Get max value
switch($name){
    case "codeSquirrel":
        return $numSquirrel;
        break;
    case "strPhobia":
        return $numPhobia;
        break;
    case "strDouble":
        return $numDouble;
        break;
    default:
        return 0;
        break;
    };
};

getMaxPage()的代码最初位于generateNavbar内,但当我需要在使用页码的其他函数中使用相同的代码时,它就停止了工作。由于某些原因,函数不希望向其发送$name,因此它始终返回0. getMaxPage()在所有调用它的函数之前定义。我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题可能不在于$name没有传递给getMaxPage,而是在numSquirrel中未定义getMaxPage 。 如果这些变量是在generateNavBar中定义的,那么它解释了为什么代码在重构之前工作,使getMaxPage成为一个单独的函数。