說到數字組合並我們會下意識的會想到array_merge()這個函數,但是在我們的工作中,一個array_merge()函數是完完全全不夠使用的,那麼還有那些方法能實現數組合併呢?今天就帶大家詳細了解下php陣列合併的方法!
我們透過一個實例來跟大家介紹:
$a = array('color'=>'red',5,6); $b = array('color'=>'blue','type'=>'fruit',6,7); $arr = array_merge($a,$b); var_dump($arr);
array (size=6) 'color' => string 'blue' (length=4) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5) 2 => int 6 3 => int 7
要求是在不使用array_merge()的情況的得到相同的效果;
(array_merge()合併數組會把前一個數組中關聯形式數組的鍵值相同的覆蓋,索引形式的則按鍵值順序合併在一起)
1.先用array_merge_recursive()函數來合併一下:
$a = array('color'=>'red',5,6); $b = array('color'=>'blue','type'=>'fruit',6,7); $arr = array_merge_recursive($a,$b); var_dump($arr); 输出结果:array (size=6) 'color' => array (size=2) 0 => string 'red' (length=3) 1 => string 'blue' (length=4) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5) 2 => int 6 3 => int 7
從結果可以看出array_merge_recursive()函數會把鍵值相同的值以一個新的關聯數組的形式返回,並以這個鍵值作為二維數組的鍵值,其他索引形式則不會受影響。
比起array_merge()的話就不會出現後面的陣列鍵和前一個相同就把前一個的值覆蓋的情況了。
2.再看下'+'號合併數組的情況:
$a = array('color'=>'red',5,6);$b = array('color'=>'blue','type'=>'fruit',6,7);$arr = $a+$b; var_dump($arr); 输出结果: array (size=4) 'color' => string 'red' (length=3) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5)
從這個結果可以看出,使用'+'號合併數組,是前面覆蓋後面的,和array_merge()相反,而且它比array_merge()更狠,如果以索引形式出現的數組的內容,合併後如果鍵值相同也會覆蓋掉!
總結:
看完本文相信有很多學生都是恍然大悟,數組合併不單單是一種,小夥伴可以根據自己的實戰項目選擇合適的php數組合併方法!
相關推薦:
以上是php實作數組合併的幾種方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!