-1

让我发布有问题的代码:

session_start(); // some text 
$Var = "";
if (isset($_SESSION['id'])) {
    // some conditions
    $userid = $_SESSION['id'];
    $username = $_SESSION['username'];
    $var = some links or text here ;
}
else
{
    $var = link or text here;
}

问题是:为什么首先$var="";声明,然后再往下用在if条件中。我想了解它的逻辑,为什么我可以这样写。

$var=header("Location: link.php");
4

2 回答 2

1

尽管 PHP 不像某些语言那样要求您在使用变量之前“声明”变量,但在编写代码时表达您的意图会很有用。可以在分配变量之前使用它(它的值将被视为null),但是 IDE 和代码检查器以及 PHP 本身会将其标记为警告,因为您可能错误地输入了错误的变量姓名。

如果代码被重新排列,例如在添加循环时,在一段代码的开头为变量分配一个空值也可以防止值“泄漏”。你可以从这个开始:

if ( some_check($something) )
{
     $var = 'something';
}
echo $var;

但稍后将其扩展为:

foreach ( $some_array as $some_item )
{
    if ( some_check($some_item) )
    {
         $var = 'something';
    }
    echo $var;
}

这里的微妙错误是,一旦$var成为'something'第一次,它就永远不会在循环的后续运行中被“清除”。从某种意义上说,将变量“初始化”为空字符串使其在“开始和结束”时变得明确。

所以你可以从这个开始:

$var = '';
if ( some_check($something) )
{
     $var = 'something';
}
echo $var;

...然后自然变成这样:

foreach ( $some_array as $some_item )
{
    $var = '';
    if ( some_check($some_item) )
    {
         $var = 'something';
    }
    echo $var;
}
于 2013-10-12T14:48:27.350 回答
0

我们经常需要在条件范围之外声明一个变量,以便我们可以在条件范围之后再次使用该变量。例如,在循环内进行计数时,在循环完成后,我们希望显示计数变量。

关于$var=header("Location: link.php");header函数返回 void,因此使用 var 来存储它的结果是没有用的,但对于其他非 void 函数,它有时非常方便。

于 2013-10-12T14:35:29.107 回答