访问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
}
?>
答案 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
}