为何array_push()返回整数而非数组?如何正确使用该函数?
如何正确使用array_push()向二维数组添加元素?
我有一个二维数组和一个一维数组:
$arr_2D = array( array("product" => "apple", "quantity" => 2), array("product" => "Orange", "quantity" => 4), array("product" => "Banana", "quantity" => 5), array("product" => "Mango", "quantity" => 7) ); $element = array("product" => "Lemon", "quantity" => 9);
想要把一维数组推入二维数组,得到包含新元素的二维数组,但执行以下代码后无效,返回结果是5:
$arr_2D = array_push($arr_2D, $element);
问题原因
array_push()的返回值是修改后数组的元素总数,不是修改后的数组本身。你把这个返回值(这里是5,原数组4个元素加新元素后总数为5)赋值给了$arr_2D,导致原数组被覆盖成数字,自然达不到预期效果。
正确用法
array_push()会直接修改传入的原数组,不需要将它的返回值重新赋值给原变量:
array_push($arr_2D, $element);
更简洁的写法
在PHP中,还可以直接用[]语法向数组末尾追加元素,效果和array_push()完全一致,写法更简洁:
$arr_2D[] = $element;
执行上述任意一种写法后,$arr_2D就会变成预期的二维数组:
$arr_2D = array( array("product" => "apple", "quantity" => 2), array("product" => "Orange", "quantity" => 4), array("product" => "Banana", "quantity" => 5), array("product" => "Mango", "quantity" => 7), array("product" => "Lemon", "quantity" => 9) );
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

