如果我在PHP中定义一个数组,比如(我不定义它的大小):
$cart = array();
我是否只需使用以下方法向它添加元素?
$cart[] = 13;
$cart[] ="foo";
$cart[] = obj;
PHP中的数组是否没有add方法,例如cart.add(13)?
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"[cc lang="php"]";
print_r($cart);
echo"
;< /代码>
相同:
$cart = array();
array_push($cart, 13);
array_push($cart, 14);
// Or
$cart = array();
array_push($cart, 13, 14);
?>
如php文档中所述,如果每次只推一个元素(如循环中)或一次只推一个元素,那么最好使用$cart[] = 13方法,这不仅是因为执行相同操作的字符更少,而且它也不会增加函数调用的性能开销,数组push()会这样做。编辑:但是,很好的答案。实际上是一样的,而且大多数使用都不会注意到性能差异,但是有助于了解这些细微差别。
它只是我,还是说,乍一看,$cart[]=...语法看起来像一个变量赋值,而不是一个隐式数组push?
这对我来说是绝对的。我不介意解释为什么它不是一个任务。
$cart[]=13;更快。字符更少,外观更好。
这种替代方法是什么?这是一个秘密的方法吗?语法过载?
我将提供我的另一种观点,即对于其他语言程序员来说,阅读cart的语法是非常令人困惑的[]=…,我对很多语言都有经验,而且我永远猜不到这就是它所做的。
为了补充@mattygabe所说的关于速记的内容,元素可以是php乐于放入数组中的任何对象。这可能说明了明显的问题,但我想我也会在这里补充一下。
@brassapparatus如果是一个赋值,则将分配给该数组的新的最后一个元素。你的意思是"简单"的任务吗?嗯,它有索引器操作符[]?
@如果其他语言挑起它,它不会受到伤害。在python中更好吗:a[len(a):] = [newVal]?
马蒂加贝的观点可能会令人怀疑,因为当它真正获得回报时,优化是必需的,而不是在每种情况下(根据史蒂夫麦康奈尔)。代码的可读性和非易用性通常更为重要。在回路中测试的实验事实需要说明,=应优先于array_push。
@Wolfdawn我不反对您对使用这种语法的其他语言的看法,但是在Python中,您可以简单地调用a.append(new_val)或a.push(new_val)作为列表。
最好不要使用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比重复使用[]=statements更快"php.net/manual/en/function.array push.php_84959
如果您的用例一次添加一个或多个项目,则绝对正确。如果同时知道所有值,则最好使用数组推送符号,这取决于必须添加多少项。每次重新键入数组名称时产生的额外字符可能比函数头调用更妨碍性能。像往常一样,在选择的时候应该进行判断。好答案!
这个答案是最完整的。
根据我的经验,当密钥不重要时,您的解决方案很好(最好):
$cart = [];
$cart[] = 13;
$cart[] ="foo";
$cart[] = obj;
你可以使用数组"推"。它将元素添加到数组的末尾,就像在堆栈中一样。
你也可以这样做:
$cart = array(13,"foo", $obj);
记住,这个方法覆盖第一个数组,所以只有在确定的时候才使用!
$arr1 = $arr1 + $arr2;
(见源代码)
为什么投反对票,有人能解释为什么这很糟糕吗?不安全吗?
@山猫,这不是答案
$products_arr["passenger_details"]=array();
array_push($products_arr["passenger_details"],array("Name"=>"Isuru Eshan","E-Mail"=>"isuru.eshan@gmail.com"));
echo"[cc lang="php"]";
echo json_encode($products_arr,JSON_PRETTY_PRINT);
echo"
;/或$countries=array();$countries["dk"]=数组("code"=>"dk","name"=>"丹麦","d_code"=>"+45");$countries["dj"]=数组("code"=>"dj","name"=>"djibouti","d_code"=>"+253");$countries["dm"]=数组("code"=>"dm","name"=>"Dominica","d_code"=>"+1");foreach($countries as$country){echo"
";
echo print_r($country);
echo"
号";}< /代码>
你的第一个选择对我来说很好。
$cart = array();
cart[] = 1:
$cart[] = 'foo':
$cart = 3;
第4行将覆盖整个数组。
当我们希望元素添加为基于零的元素索引时,我想这也会起作用:
// 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';
它叫做array_push:http://il.php.net/function.array-push
带链接的答案没有帮助,除非它们也引用了相关数据,以防链接页面消失。