【问题标题】:Should an array be declared before using it? [closed]数组是否应该在使用前声明? [关闭]
【发布时间】:2013-02-15 19:18:56
【问题描述】:

哪一个更好,代码 A 或 B:

答:

    $array = array();
    $array[] = 'value';

B(使用数组而不声明数组):

    $array[] = 'value'

【问题讨论】:

  • 两者都可以。但是如果 $array 用于之前的数组以外的其他东西,你就会遇到麻烦。例如,$x = 'hello'; $x[] = 'there'; 会惹你生气。

标签: php variables


【解决方案1】:

最佳实践是声明它。

原因:如果由于某种原因有人打开了 register_globals 并且在您使用它之前设置了 $array,您最终可能会得到奇怪的结果。 如果你声明它,你总是确定你有一个空数组。

【讨论】:

  • 谢谢,简单易懂的回答。
【解决方案2】:

或 C: $array = array('value');

【讨论】:

    【解决方案3】:

    A 是更好的方法,但如果它是已知值,我会这样做
    $array=array('value');

    try this site

    【讨论】:

      【解决方案4】:

      A 更好。 B 在运行时会产生一个 PHP Notice,但仍然可以正常工作。 正如其他一些人提到的并且我最初忽略的那样,A 还将通过使您的代码更加健壮确保$array 是您在需要时想要的,而不是其他变量类型或之前定义的变量。

      编辑:PHP 在使用未定义变量时不会发出通知的一次是附加到未初始化的数组时。来自 php.net:

      在使用未初始化变量的情况下会发出 E_NOTICE 级别错误,但在将元素附加到未初始化数组的情况下不会发出。

      【讨论】:

      • 您确定 PHP 通知吗?在这种情况下我从未见过它,而且我确实启用了通知。尽管如此,声明array() 绝对是一种更好的做法。
      • 在未声明数组的情况下分配数组值时从未见过通知...
      • @DoubleGras - 我更新了我的答案
      【解决方案5】:

      IMO 这取决于您的脚本的复杂性。就像在 foreach 循环中使用 $i 一样,您可能会经常使用数组。

      通过首先定义数组,您可以确保它是一个新的空数组,从而确保它不包含以前使用的数据。

      【讨论】:

        【解决方案6】:

        AB 好,正如 @G-Nugget 出于同样的原因所说的,但推论是,如果你有突然出现的变量,它也会使你的代码更难阅读。

        【讨论】:

          【解决方案7】:

          根据manual,提到使用方括号语法创建/修改的部分,实际上意味着使用$array[] = 'value';创建数组与通过声明变量来创建数组一样正确在为其赋值之前。

          换句话说,不用担心。

          【讨论】:

            猜你喜欢
            • 2011-04-11
            • 1970-01-01
            • 2012-04-11
            • 2020-08-07
            • 2012-11-28
            • 2012-04-04
            • 1970-01-01
            • 2011-06-07
            • 2017-03-06
            相关资源
            最近更新 更多