【问题标题】:How to add elements to an empty array in PHP?如何在 PHP 中向空数组添加元素?
【发布时间】:2010-10-15 04:04:21
【问题描述】:

如果我在 PHP 中定义一个数组,例如(我没有定义它的大小):

$cart = array();

我是否只需使用以下内容向其中添加元素?

$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;

PHP中的数组是不是有add方法,比如cart.add(13)

【问题讨论】:

    标签: php arrays variables


    【解决方案1】:

    array_push 和你描述的方法都可以。

    $customArray = array();
    $customArray[] = 20;
    $customArray[] = 21;
    

    以上是正确的,但以下是为了进一步理解

    $customArray = array();
    for($i=0;$i<=12;$i++){
        $cart[] = $i;  
    }
    echo "<pre>";
    print_r($customArray);
    echo "</pre>";
    

    【讨论】:

    • 这个答案是直接从这个问题中得分最高的答案复制过来的?
    【解决方案2】:

    根据我的经验,当键不重要时,最好的解决方案:

    $cart = [];
    $cart[] = 13;
    $cart[] = "foo";
    $cart[] = obj;
    

    【讨论】:

      【解决方案3】:
      $cart = array();
      $cart[] = 11;
      $cart[] = 15;
      
      // etc
      
      //Above is correct. but below one is for further understanding
      
      $cart = array();
      for($i = 0; $i <= 5; $i++){
                $cart[] = $i;  
      
      //if you write $cart = [$i]; you will only take last $i value as first element in array.
      
      }
      echo "<pre>";
      print_r($cart);
      echo "</pre>";
      

      【讨论】:

      • $cart[] = $i; - 那部分代码将元素添加到数组----> $cart = [$i]; - 这将通过编译器,但你不会得到你想要的
      【解决方案4】:

      array_push 和你描述的方法都可以。

      $cart = array();
      $cart[] = 13;
      $cart[] = 14;
      // etc
      
      //Above is correct. but below one is for further understanding
      $cart = array();
      for($i=0;$i<=5;$i++){
          $cart[] = $i;  
      }
      echo "<pre>";
      print_r($cart);
      echo "</pre>";
      

      等同于:

      <?php
      $cart = array();
      array_push($cart, 13);
      array_push($cart, 14);
      
      // Or 
      $cart = array();
      array_push($cart, 13, 14);
      ?>
      

      【讨论】:

      • 如 PHP 文档中所述,如果您每次只推送一个元素(如在循环中)或单个元素一次,最好使用 $cart[] = 13 方法,不仅因为执行相同操作的字符更少,但也不会像 array_push() 那样强加函数调用的性能开销。编辑:但是,很好的答案。实际上相同,大多数使用甚至不会注意到性能差异,但有助于了解这些细微差别。
      • 是我还是$cart[]=... 语法乍一看像是变量赋值而不是隐式array_push?
      • 这对我来说绝对有用。我不介意解释为什么它不是分配。
      • $cart[] = 13;是比较快的。字符更少,看起来更好。
      • 我只是提供我的另一种观点,即其他语言程序员阅读 cart[] =... 的语法非常令人困惑,我有很多语言的经验,我'永远猜不到它的作用。
      【解决方案5】:
      $products_arr["passenger_details"]=array();
      array_push($products_arr["passenger_details"],array("Name"=>"Isuru Eshan","E-Mail"=>"isuru.eshan@gmail.com"));
      echo "<pre>";
      echo json_encode($products_arr,JSON_PRETTY_PRINT);
      echo "</pre>";
      
      //OR
      
      $countries = array();
      $countries["DK"] = array("code"=>"DK","name"=>"Denmark","d_code"=>"+45");
      $countries["DJ"] = array("code"=>"DJ","name"=>"Djibouti","d_code"=>"+253");
      $countries["DM"] = array("code"=>"DM","name"=>"Dominica","d_code"=>"+1");
      foreach ($countries as $country){
      echo "<pre>";
      echo print_r($country);
      echo "</pre>";
      }
      

      【讨论】:

        【解决方案6】:

        请记住,此方法会覆盖第一个数组,因此请仅在确定时使用!

        $arr1 = $arr1 + $arr2;
        

        (see source)

        【讨论】:

        • 为什么投反对票,有人可以解释为什么这很糟糕吗?不安全吗?
        • @SandyBeach 这不是答案
        【解决方案7】:

        最好不要使用array_push,只使用你建议的。这些函数只是增加了开销。

        //We don't need to define the array, but in many cases it's the best solution.
        $cart = array();
        
        //Automatic new integer key higher than the highest 
        //existing integer key in the array, starts at 0.
        $cart[] = 13;
        $cart[] = 'text';
        
        //Numeric key
        $cart[4] = $object;
        
        //Text key (assoc)
        $cart['key'] = 'test';
        

        【讨论】:

        • “如果你在循环中向数组添加多个值,使用 array_push 比重复 [] = 语句更快”php.net/manual/en/function.array-push.php#84959
        • 如果您的用例是一次添加一个或多个项目,则绝对正确。如果同时知道所有值,则最好只使用 array_push 表示法,具体取决于必须添加多少项 每次重新键入数组名称的额外字符可能比函数调用更会影响性能高架。与往常一样,在选择时应进行判断。好答案!
        • 这个答案最全。
        • 1) array_push() 有一个返回值,而其他没有。也许这是其开销的/一个原因?除非您需要该返回值,否则使用其他方法似乎是一种共识。 2) 如果您需要将元素添加到数组的end,请使用array_push()+= 连接方法(此答案中未显示),或$cart[] = 13 方法。使用命名/数字键方法($cart[4] = $object 和 $cart['key'] = 'test'` 方法不保证元素将被添加到end数组,只是它将是 in 数组。
        • @SherylHohman:这个 $cart[] = 会将值添加到数组的末尾。
        【解决方案8】:

        当一个人想要使用从零开始的元素索引添加元素时,我想这也可以:

        // adding elements to an array with zero-based index
        $matrix= array();
        $matrix[count($matrix)]= 'element 1';
        $matrix[count($matrix)]= 'element 2';
        ...
        $matrix[count($matrix)]= 'element N';
        

        【讨论】:

          【解决方案9】:

          您可以使用array_push。 它将元素添加到数组的末尾,就像在堆栈中一样。

          你也可以这样做:

          $cart = array(13, "foo", $obj);
          

          【讨论】:

            猜你喜欢
            • 2013-05-28
            • 1970-01-01
            • 2021-01-18
            • 1970-01-01
            • 1970-01-01
            • 2021-05-28
            • 2011-02-20
            相关资源
            最近更新 更多