【问题标题】:Must I declare my variables in PHP?我必须在 PHP 中声明我的变量吗?
【发布时间】:2011-11-27 23:04:51
【问题描述】:

我通常设置所有变量,即使它们可能不会返回任何内容。但现在我想知道:

如果我回显一个空变量会有什么危害?

例如。

<?php

$a = 'a';
$b = 'b';

if($a==$b)
{
$data = 'Yes they where the same';
};


echo $data;

?>

为什么我必须这样做?

<?php

$data = ''; // declare varibale
$a = 'a';
$b = 'b';

if($a==$b)
{
$data = 'Yes they where the same';
};


echo $data;

?>

感谢您的回答!

扩展问题:

什么是最佳实践:

$data = '';

$data;

或使用

if (isset($data)){
echo $data;
}

【问题讨论】:

  • 变量...不变量
  • 在启用错误/错误报告的情况下自行测试,$a$b 的值不同。

标签: php variables set declare


【解决方案1】:

如果我回显一个空变量会有什么危害?

如果您没有定义它,则没有“空”变量。所以你试图输出一些不存在的东西。显然它没有意义并引起通知(尝试使用E_ALL 运行脚本)

【讨论】:

    【解决方案2】:

    简短的回答:避免不必要的错误和通知。

    详细的答案已在herehere 上进行了阐述。

    【讨论】:

      【解决方案3】:

      一般来说,最好不要像之前声明的那样使用不存在的变量,因为这会抑制一整类错误。想象一下,如果你有一个变量$foo,然后你输错了$eoo$eoo 没有任何值(默认值除外),但您的程序将毫无怨言地运行。这会使程序非常难以调试。要求在使用之前声明变量(当然,不仅仅是有条件地)让编译器捕获大量错误。

      【讨论】:

      • @halfdan - 我不认为这真的是 PHP 使用的主流(至少目前如此)。还是我错过了什么?
      • @Jared 解析器用于解析文本,编译器用于编译解析的文本。甚至 PHP 也有编译器,即使它基本上与运行时在同一步骤中使用。我认为 PHP 的 compiler 不会捕获丢失的变量,但 runtime 会。
      • @deceze - 很公平。虽然,我可能会说确保在使用之前声明变量,除非有办法要求它们被声明(如 VBA 的Option Explicit)。
      【解决方案4】:

      它不会造成任何伤害,但它会向您显示此通知:

      PHP 注意:未定义变量:数据在行

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 2011-11-03
        相关资源
        最近更新 更多