首页 > 编程知识 正文

数组和集合的区别,集合与数组的区别

时间:2023-05-05 09:16:20 阅读:269598 作者:4698

日常开发中,合并两个数组经常用 array_merge,偶尔用 +,但这两者有什么区别呢,下面结合两个例子分析。

$arrA = ['hobby' => 'coding', 'age' => 17];$arrB = ['hobby' => 'dancing', 'age' => 27];print_r(array_merge($arrA, $arrB));/*Array( [hobby] => dancing [age] => 27)*/print_r($arrA + $arrB);/*Array( [hobby] => coding [age] => 17)*/ $a = [ 0 => 'A', 1 => 'B', 2 => 'C',];$b = [ 0 => 'AA', 1 => 'BB', 2 => 'CC', 20 => 'D', 21 => 'E', 22 => 'F',];print_r(array_merge($arrA, $arrB));/*Array( [0] => A [1] => B [2] => C [3] => AA [4] => BB [5] => CC [6] => D [7] => E [8] => F)*/print_r($arrA + $arrB);/*Array( [0] => A [1] => B [2] => C [20] => D [21] => E [22] => F)*/

通过查看示例,那么结论简单明了:

如果 key 为字符串且名称相同,那么 array_merge 后面数组元素值会覆盖前面数组元素值,而 + 则相反。如果 key 为数字,那么 array_merge 不会进行覆盖,而是合并,但会调整索引顺序,而 + 还是相同的 key 前面的覆盖后面的不会调整索引顺序。

末了,再提下 array_merge_recursive,依据 官网说明

将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。需要注意的是,如果数组具有相同的数值键名,后一个值将不会覆盖原来的值,而是附加到后面。

也就是递归的合并数组,如果 key 相同,那么对应的 value 则会合并到一个数组里。来个示例看看效果

$arrA = ['hobby' => 'coding', 'age' => 17, 17];$arrB = ['hobby' => 'dancing', 'age' => 27, 27];print_r(array_merge_recursive($arrA, $arrB));/*Array( [hobby] => Array ( [0] => coding [1] => dancing ) [age] => Array ( [0] => 17 [1] => 27 ) [0] => 17 [1] => 27)*/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。