如何在PHP中将元素添加到空数组?


488

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

$cart = array();

我是否可以使用以下内容简单地添加元素?

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

PHP中的数组没有add方法,例如cart.add(13)

Answers:


802

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);
?>

178
如PHP文档中所述,如果您每次仅推入一个元素(例如在循环中)或一次推入单个元素,那么最好使用该$cart[] = 13方法,不仅因为执行相同操作的字符更少,而且也不会增加函数调用的性能开销,而array_push()会造成这种情况。编辑:但是,很好的答案。实际上是相同的,并且大多数用途甚至都不会注意到性能差异,但是有助于了解这些细微差别。
Mattygabe 2011年

67
仅仅是我还是$cart[]=...乍一看语法看起来像变量分配而不是隐式array_push?
布莱德·海因

6
它肯定对我有用。我不介意解释为什么它不是一项任务。
limeandcoconut 2014年

4
$ cart [] = 13; 是比较快的。字符较少且外观更好。
Gal Bracha 2014年

19
我只是提供另一种观点,即其他语言程序员阅读cart [] = ...的语法非常令人困惑,我有很多语言的经验,而且我永远也不会猜到这是什么。
Erti-Chris Eelmaa '16

75

最好不要使用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';

11
“如果要在循环中向数组添加多个值,则使用array_push比使用重复的[] =语句要快” 。php.net/manual/en/function.array
Ollie Glass

3
如果您的用例一次添加一个或多个项目,则绝对正确。如果同时知道所有值,则最好使用array_push表示法,具体取决于必须添加多少项,每次重新键入数组名称时产生的多余字符可能比函数调用更多地是性能障碍。高架。与往常一样,选择时应进行判断。好答案!
Mattygabe 2011年

2
这个答案是最完整的。
罗基亚

10

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

您也可以这样做:

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

10

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

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

2

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

$arr1 = $arr1 + $arr2;

请参阅源代码


1
为什么要投票,有人可以解释为什么这不好?不安全吗?
桑迪

4
@SandyBeach这不是答案
mateos

2
$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]; -这将通过编译器,但您将无法获得想要的结果
unpluggeDloop

0
$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>";
}

-1

当人们希望使用从零开始的元素索引添加元素时,我想这也会起作用:

// 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';
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.