【问题标题】:php: why declare an array $array=array() - what is the benefit of it?php: 为什么要声明一个数组 $array=array() - 它有什么好处?
【发布时间】:2012-06-05 02:30:27
【问题描述】:

如果您只是想以这种方式为变量赋值:

$array[]="value 1"$array[]="value 2"

您是否首先必须声明 $array=array()?显然你不必这样做,因为它没有它就可以工作,但你为什么要这样做呢?或者这样做有什么好处?

【问题讨论】:

    标签: php arrays variables


    【解决方案1】:

    主要用于文档目的。它提醒开发人员该变量旨在用作数组。

    例如,在 CodeIgniter 中,您可以将值传递给视图,但它们必须是数组,否则会引发异常。将变量声明为array() 会提醒您,即使您打算传递单个值,也必须将其作为元素插入到数组中。

    【讨论】:

      【解决方案2】:

      我认为主要是可读性。可能有人(或 5 个月后的你自己)会出现并想知道 $array[] 来自哪里,因为它“神奇地出现在代码中”。使用 $myArray=array(),你至少知道(嘿,这是我们第一次看到变量的地方)。

      【讨论】:

        【解决方案3】:

        它在您构建代码时也很有用。例如如果我们首先在顶部声明变量

        <?php
        $myArray = array();
        
        //...
        

        在底部我们加载了一个模板文件$template-&gt;render('template.html', $myArray);

        假设我们有一个 if 语句,如果某个条件为真,我们为数组分配一个新值。但是如果条件不成立,我们将不会传递任何信息(新值到数组),因此不会启动数组 - 除非未声明数组,否则它将产生错误。但既然是这样,我们只需加载一个空数组就不会出现错误。

        【讨论】:

        • 谢谢,好点子!虽然如果在这个数组上使用任何函数,比如end($array) 或其他什么,即使数组被声明但为空,也会导致错误......所以无论如何你都必须检查它,不是吗?跨度>
        【解决方案4】:

        您所描述的不是声明,而是初始化。您不是在声明 $array 是一个数组,而是在为它分配一个值(空数组)。

        这样的初始化可以用来建立一个作用域,也许它可以使代码更具可读性(虽然我看不出来如何),但通常只有在你特别想要一个空数组时才会这样做。经典示例是使用 [] 语法附加到数组时。考虑以下几点:

        $a = 'old value';
        $a = array();
        $a[] = 1;
        $a[] = 2;
        $a[] = 3;
        

        没有第二行,这会产生错误。

        顺便说一下,array() 命令不是一个普通的函数。它是一种语言结构,从 PHP 5.4 开始,您可以将其替换为更短的 [] 语法:

        $a = 'old value';
        $a = [];
        $a[] = 1;
        $a[] = 2;
        $a[] = 3;
        

        【讨论】:

          【解决方案5】:

          不,你没有。

          一般来说,我唯一用空数组初始化数组的情况是这样的:

          $list = array();
          for($database_result as $row)
          {
              $list[] = $row['value'];
          }
          
          echo implode(', ', $list);
          

          如果数据库结果中恰好没有行,那么 implode 调用将失败,因为 $list 不存在。


          你给出的例子,只是设置一个你已经知道的值列表,我通常这样做:

          $array = array
          (
              "value 1",
              "value 2",
          );
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-11-02
            • 2019-07-15
            • 1970-01-01
            • 1970-01-01
            • 2018-10-26
            • 2014-01-25
            • 1970-01-01
            • 2018-05-30
            相关资源
            最近更新 更多