当前位置: 首页 > 后端技术 > PHP

三种PHP数组合并方式的区别示例

时间:2023-03-30 01:18:50 PHP

1、目前工作中遇到的PHP数组合并的方法主要有3种:1.+运算符2.array_merge()3.array_merge_recursive()区别主要体现在键名相同(数字键名、字符stringkeyname),下面的文章会用两个实际的例子来体现~2.相同的字符串key1,"second_key"=>1,"third_key"=>1,];$arrSecond=["first_key"=>2,"second_key"=>2,"fourth_key"=>2,];//对于重复的字符串key,array_merge后,后面数组的key值会被覆盖之前的echosprintf("\narray_mergeresult:\n%s",print_r(array_merge($arrFirst,$arrSecond),true));//对于重复的字符串键,经过+操作后,之前数组的键值会覆盖后面的echosprintf("\narray+result:\n%s",print_r($arrFirst+$arrSecond,true));//对于重复的字符串键,经过array_merge_recursive后,将相同键名的键值合并到同一个数组中(递归)echosprintf("\narray_merge_recursiveresult:\n%s",print_r(array_merge_recursive($arrFirst,$arrSecond),true));运行结果:三个,相同的数字key"first",222=>"first","first"//会指定默认数字key223];$arrSecond=[111=>"second",333=>"second","second"//默认的数字键会被指定为334];//对于重复的数字键,+运算后,前一个数组会覆盖后者,而前一个数字将被保留keywordechosprintf("\narray+result:\n%s",print_r($arrFirst+$arrSecond,true));//对于重复的数字键,array_merge后,重新排列数字键,不会覆盖echosprintf("\narray_mergeresult:\n%s",print_r(array_merge($arrFirst,$arrSecond),true));//对于重复的数字键,array_merge_recursive后,重新排列数字键,不会覆盖echosprintf("\narray_merge_recursiveresult:\n%s",print_r(array_merge_recursive($arrFirst,$arrSecond),true));运行结果:4.附:PHP数组基本概述1.KEY1和Key只能是Integer或String,并且可以同时存在2.包含合法整数值的字符串Key会被转换成整数存储,如:一个Key为'6'会转为6存储3,一个布尔值Key会转为整数存储,true转为1存储,false转为0存储为4,null会转为空串存为5,如果多个Key值转为同一个值,则只使用最后一个,会覆盖之前的一个,如:一个key如果是of'1',true,1在数组中依次定义,最后只会存入key为1的值,之前的值会被覆盖。6.如果不指定Key,会自动设置为之前使用过的最大整数Key+1,最小为0第二,VALUE1,可以是PHP的任意类型(string,integer,floatingpoint,Boolean,object,array,NULL,resource类型)三、其他类型转为数组当类型1、Integer、String、Float、Boolean、Resource转为数组类型时,Key会自动赋值为0,而值将是其原始值。2、当Object类型转换为数组类型时,会使用成员变量名作为数组Key。private属性的Key会以类名为前缀,protected属性的Key会以'*'为前缀3,Null会转为空数组4,foreach1,两种形式,foreach($arras$key=>$value)andforeach($arras$value),其中$value为值传递,使用&$valuee通过引用传递2.遍历依赖于数组的内部指针3.遍历后$value会被保留。为了防止在多个foreach中出现问题,您可以取消设置($value)或在foreach之后使用不同的变量