为什么声明像$ var =“”这样的变量;

时间:2013-10-12 14:29:15

标签: php

让我发布有问题的代码:

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");

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

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