php如何實現數組合併但鍵值相同的數組不互相覆蓋?
比如說array(0 =&> "a", 1 =&> "b")和array(0 =&> "c", 1 =&> "d")合併之後為array(0 =&> "a", 1 =&> "b", 2 =&> "c", 3 =&> "d"),我試過php自帶的那兩個合併數組的函數,都達不到這個目的。
數組合併array_merge($arr1,$arr2)和數組相加$arr1+$arr2的區別:
數字索引數組:
array_merge:合併生成的數組的索引統一從0開始,所以不存在覆蓋的情況.
"+"操作符:不改變數字索引,如果索引已經存在,則跳過該元素.
字元索引數組:
array_merge:如果兩個數組存在相同的鍵,後面的一個會覆蓋前面的.
"+"操作符:如果兩個數組存在相同的鍵,前面的一個會覆蓋後面的.
& "a", "k2" =&> "b");
$arr2 = array("k1" =&> "c", "k2" =&> "d");
var_export(array_merge($arr1, $arr2)); // array("k1" =&> "c", "k2" =&> "d")
var_export($arr1 + $arr2); // array("k1" =&> "a", "k2" =&> "b")
?&>
& "a", 1 =&> "b");
$arr2 = array(0 =&> "c", 1 =&> "d");
var_export(array_merge($arr1, $arr2)); // array (0 =&> "a", 1 =&> "b", 2 =&> "c", 3 =&> "d")
var_export($arr1 + $arr2); // array (0 =&> "a", 1 =&> "b")
?&>
所以,樓主舉例的情況,用array_merge即可.
謝邀,使用數組的array_push將後兩個函數的值壓入前一個函數中,然後再使用array_value生成一個新的函數就可以了。或者還是用你使用的自帶合併函數,merge,然後再用array_value生成新的數組也是可以的
/**
* @author 昌維&<867597730@qq.com&>
* @param array
* @return array
*/
function array_add($a1,$a2){
$n = 0;
foreach ($a1 as $key =&> $value) {
$re[$n] = $value;
$n++;
}
foreach ($a2 as $key =&> $value) {
$re[$n] = $value;
$n++;
}
return $re;
}
array_replace_recursive()
array array_replace_recursive ( array $array1 , array $array2 [, array $... ] )
array_replace_recursive()
換個存法
&
array(2) {
[0]=&>
int(0)
[1]=&>
string(1) "a"
}
[1]=&>
array(2) {
[0]=&>
int(1)
[1]=&>
string(1) "b"
}
[2]=&>
array(2) {
[0]=&>
int(0)
[1]=&>
string(1) "c"
}
[3]=&>
array(2) {
[0]=&>
int(1)
[1]=&>
string(1) "d"
}
}
*/
PHP array_merge_recursive() 函數
推薦閱讀:
※學哪種編程語言能保住一頭秀髮?
※.net的網站數據,可以轉到php程序里用嗎?
※為什麼 C++ / PHP / Delphi / C# 的設計者都是丹麥人?
※各個編程語言都有哪些「亮點」?
※PHP7 出來之後,HHVM 還有什麼優勢嗎?
TAG:PHP | 後端技術 | 編程 | ZendFramework | ThinkPHP |