在网上找了会儿,发现并没有符合要求的代码,于是自己写了个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?php function merge($arr1, $arr2) { $new = $arr1; // arr2 项覆盖 arr1 的同名项 foreach ($arr2 as $key => $value) { if (is_string($key)) { if (is_array($value)) { $new[$key] = merge($arr1[$key], $value); } else { $new[$key] = $value; } } else { $new[] = $value; } } return $new; } $arr1 = [ "color" => [ "favorite" => "red", "a" => "a", "arr" => [ 1, 2 ] ], 5 ]; $arr2 = [ "color" => [ "favorite" => "green", "b" => "b", "arr" => [ 1, 3 ] ], 10 ]; $new = $this->merge($arr1, $arr2); print_r($new); |
输出结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Array ( [color] => Array ( [favorite] => green [a] => a [arr] => Array ( [0] => 1 [1] => 2 [2] => 1 [3] => 3 ) [b] => b ) [0] => 5 [1] => 10 ) |