1

Text5.php访问Text2.php. 我的问题是我为什么会得到一个未定义的变量,因为我已将变量包含$steps为数组:

文本5.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;
}

?>

文本2.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   

}

?>
4

1 回答 1

1

我的问题是我为什么会得到一个未定义的变量,因为我已将变量 $steps 作为数组包含在内

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

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

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

您可以使用=符号创建默认参数:

function allowed_in($steps = array()){
    //Logic
}

这意味着您现在可以不带参数调用它。

您可能还在寻找是否global因为您的$steps变量在全局范围内:

function allowed_in(){
    global $steps;
    //Logic
}
于 2013-01-05T15:06:29.743 回答