【问题标题】:PHP: Right way to declare variable before use in loopPHP:在循环中使用之前声明变量的正确方法
【发布时间】:2010-09-19 14:58:03
【问题描述】:

我有一个内置循环的变量。比如:

$str = "";
for($i = 0; $i < 10; $i++) $str .= "something";

如果省略了 $str = "",我会收到未定义变量的通知,但我认为 php 在第一次看到未声明的变量时会自动声明一个变量?

我该怎么做?

【问题讨论】:

    标签: php performance loops


    【解决方案1】:

    您得到了未定义的变量,因为您将自身的值与另一个值连接起来。

    相当于

    $str = $str . "something";

    所以,它不能说初始值是多少。相当于这个:

    $str = [undefined value] . "something";

    [undefined value]"something" 串联的结果是什么?口译员不能说……

    因此,您必须先将"" 放入变量中以初始化变量的值,就像您所做的那样。

    HTH

    【讨论】:

    • 我假设变量范围也适用于循环,但是你是对的,同样的事情发生在我身上,我现在明白了原因。 +1
    【解决方案2】:

    不使用自动声明功能更安全 - 这就是它发出通知的原因。通知是最低级别的警告,默认不会显示。如果您打开它们,大多数较旧的 PHP 应用程序会发出大量通知。

    【讨论】:

      【解决方案3】:

      如果你真的需要让它更清洁,你可以这样做:

      for($i = 0, $str = ''; $i < 10; $i++) $str .= "something";
      

      但你所拥有的是我通常所做的。 vlceBerg 解释得很好。

      【讨论】:

      • 只是一个想法...你能做到吗:for($i = 0, $str = ''; $i
      • 显然是的:zsh % echo ' for($i = 0, $str = ""; $i ' | php 某事某事某事某事某事某事某事某事某事某事某事某事某事某事某事某事某事某事某事某事某事某事
      • 是的 vlceBerg - 你甚至不需要循环内容。我发现使用内容更容易理解,但因为它是您不需要的一行。
      【解决方案4】:

      自动声明的 PHP 变量被注册为未定义,这就是您收到通知的原因。

      通常最好在使用 PHP 变量之前声明它们,尽管我们当中的许多懒惰者,包括我自己并不总是这样做。

      【讨论】:

        猜你喜欢
        • 2018-10-21
        • 2010-09-29
        • 2012-06-17
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多