php 二维数组头部追加元素问题求助

要给一个二维数组追加元素不知道为啥一直追加不上去。类似代码如下,主要用了array_unshift()这个函数,在文档中说是可以将元素追加到数组中。

<?php
$arr1 = ['0'=>['name'=>zhangsan,'sex'=>1],'1'=>['name'=>lisi,'sex'=>0],'2'=>['name'=>wangwu,'sex'=>1]];

$array2 = ['0'=>['name'=>zhaoliu,'sex'=>1],'1'=>['name'=>xiaoqi,'sex'=>1]];

//把$arr2的元素追加到$arr1的最前面
第一种方法:
foreach($array2 as $key=>$value){
    array_unshift($arr1,$value);
}

第二种方法:
array_walk($array2,function($item) use ($arr1)){
    array_unshift($arr1,$item);
}

输出显示部分就不写了暂时

执行结果打印$arr1的时候都是显示了一个数字,而不是追加后的新数组;求高手分析下原因或给予解决方法,谢谢。

温温酱
浏览 759回答 3
3回答

烙印99

你用了use ($arr1),这只是按值传递,需要使用引用传递use (&$arr1) array_unshift() 的参数是按引用传递的,所以会直接改变原数组,而且返回值只是数组的元素个数。print_r(array_unshift())只会输出数字

墨色风雨

抱歉,你的第二个写法能跟我解释下么?实在是没看懂,而且第一个方法是可运行完成的,但至于为什么不成功,能不能把你写的代码,还有打印结果,发一张截图看下。

达令说

array_unshift返回的是被添加的数组的新数目,所以会返回一个数字,而不是追加后的新数组
打开App,查看更多内容
随时随地看视频慕课网APP