鍍金池/ 問答/PHP  Linux/ php 二維數(shù)組頭部追加元素問題求助

php 二維數(shù)組頭部追加元素問題求助

要給一個(gè)二維數(shù)組追加元素不知道為啥一直追加不上去。類似代碼如下,主要用了array_unshift()這個(gè)函數(shù),在文檔中說是可以將元素追加到數(shù)組中。

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

輸出顯示部分就不寫了暫時(shí)

執(zhí)行結(jié)果打印$arr1的時(shí)候都是顯示了一個(gè)數(shù)字,而不是追加后的新數(shù)組;求高手分析下原因或給予解決方法,謝謝。

回答
編輯回答
陌南塵

clipboard.png
array_unshift返回的是被添加的數(shù)組的新數(shù)目,所以會(huì)返回一個(gè)數(shù)字,而不是追加后的新數(shù)組

2017年6月29日 10:55
編輯回答
離夢

你用了use ($arr1),這只是按值傳遞,需要使用引用傳遞use (&$arr1)

array_unshift() 的參數(shù)是按引用傳遞的,所以會(huì)直接改變?cè)瓟?shù)組,而且返回值只是數(shù)組的元素個(gè)數(shù)。print_r(array_unshift())只會(huì)輸出數(shù)字

2017年8月5日 22:01
編輯回答
深記你

抱歉,你的第二個(gè)寫法能跟我解釋下么?實(shí)在是沒看懂,而且第一個(gè)方法是可運(yùn)行完成的,但至于為什么不成功,能不能把你寫的代碼,還有打印結(jié)果,發(fā)一張截圖看下。

2017年10月2日 22:41