继续为数组获取未定义的变量

时间:2013-01-05 14:49:30

标签: php

访问Text5.php时,我一直为Text2.php中的步骤获取undefiendd变量。我的问题是,为什么我要将变量$steps作为数组包含在内,我是如何得到一个未定义的变量的:

Text5.php

    <?php

$steps = array(1 =>'Text1.php',2 => 'Text2.php',3 => 'Text3.php',4 => 'Text4.php',5 => 'Text6.php',6 => 'Text7.php');

function allowed_in($steps){
// Track $latestStep in either a session variable
// $currentStep will be dependent upon the page you're on

if(isset($_SESSION['latestStep'])){
   $latestStep = $_SESSION['latestStep'];
}
else{
   $latestStep = 0;
}
$currentStep = basename(__FILE__); 

$currentIdx = array_search($currentStep, $steps);
$latestIdx = array_search($latestStep, $steps);

if ($currentIdx - $latestIdx == 1 )
    {
       $currentIdx = $_SESSION['latestStep'];
       return 'Allowed';
    }
    return $latestIdx;
}

?>

Text2.php

            if (allowed_in()=== "Allowed")
    {
        //Text2.php code
    }
    else
        {
$page = allowed_in()+1;
?>

<div class="boxed">
<a href="<?php echo $steps[$page] ?>">Link to Another Page</a>
</div>

<?php   

}

?>

1 个答案:

答案 0 :(得分:1)

  

我的问题是我如何得到一个未定义的变量,因为我已将变量$ steps包含为数组

您实际上从未使用任何数组调用allowed_in

if (allowed_in()=== "Allowed")$page = allowed_in()+1;都在没有任何参数的情况下调用allowed_in()函数,并且在您的函数中:

function allowed_in($steps){你指定必须有一个变量(我们创建名称$steps)。

您可以使用=符号

创建默认参数
function allowed_in($steps = array()){
    //Logic
}

这意味着您现在可以在没有参数的情况下调用它。

您可能也在查找global,因为您的$steps变量位于全局范围内:

function allowed_in(){
    global $steps;
    //Logic
}