首页 > 代码库 > PHP array_flip() array_merge() array+array的使用总结
PHP array_flip() array_merge() array+array的使用总结
array_flip(array);
//传递一个数组参数,对该数组的键、值进行翻转
例如:
$a = array( ‘a‘, ‘b‘, ‘c‘);print_r(array_flip($a));//输出为:Array( [a] => 0 [b] => 1 [c] => 2)//需要注意的是: array_flip(): Can only flip STRING and INTEGER values
array_merge (array1,array2[,aray3...])
//对两个或多个数组进行合并(传递一个数组参数也是可以的)
需要注意的是:
- 如果数组中没有键名,则不管他们的值的交集存不存在重复,最终结果都会以下标为0开始的数组返回,值的顺序依次为array1、array2..
- 如果数组中设置有键名,且键名存在重复,则该键值为最后一个键名对应的值(覆盖前面)
- 如果数组是指定数字索引,则结果的键名会以从0开始的数组重新进行索引
- 如果数组中的键名存在以上的组合情况,则以显式指定键名的优先
- 总结一点是,他要保证合并后的数组索引不能重复,若没指定键名或指定键名为数字,则结果按从0开始的数字重新进行,若指定了非数字索引,则他会保留之前的索引,但如果存在多个,则只保留最后一个
几个例子:
//没有指定索引$a = array( ‘a‘, ‘b‘,);$b = array( ‘a‘, ‘b‘,);$arr = array_merge($a,$b);//输出:Array( [0] => a [1] => b [2] => a [3] => b)//=======================//显式指定数字键名$a = array( 3=>‘a‘, 4=>‘b‘,);$b = array( 1=>‘a‘, 2=>‘b‘,);$arr = array_merge($a,$b);//输出:Array( [0] => a [1] => b [2] => a [3] => b)//=======================//显式指定数字键名和无索引混合$a = array( 3=>‘a‘, ‘b‘,);$b = array( ‘a‘, 2=>‘b‘,);$arr = array_merge($a,$b);//输出:Array( [0] => a [1] => b [2] => a [3] => b)//=======================//显式指定非数字索引1$a = array( ‘a‘=>1, ‘b‘,);$b = array( ‘a‘, ‘b‘,);$arr = array_merge($a,$b);//输出:Array( [a] => 1 [0] => b [1] => a [2] => b)//=======================//显式指定非数字索引2$a = array( ‘a‘=>1, ‘b‘=>2,);$b = array( ‘a‘, ‘b‘=>22,);$arr = array_merge($a,$b);//输出:Array( [a] => 1 [b] => 22 [0] => a)
其他的几种组合例子就不贴上去了……
array1+array2
这种写法其实没用过,研究了一把,他其实也是用来合并数组操作。用法和array_merge有一定的区别。
- 若数组没有指定索引,则他会先把array1的先赋值给结果,假设array1长度为3,array2长度为5,则他会把array2[3]、array2[4]追加到结果后面,array2[0-2]直接忽略
- 若为数组指定了索引,不管为数字还是非数字索引,最终结果都会保留指定的索引,若两个数组存在重复的索引,则以第一个为最终结果(覆盖后面)
- 指定索引和无索引混合的情况下,先看array1,若前几个为无索引,比如前3个没有指定,则还按照规则1,忽略掉array2中的前3个。若array1[0]为显式指定索引,则不会忽略array2中的数组元素,除非存在指定相同的索引,遵循规则2
几个例子:
//没有指定索引$a = array( ‘a‘, ‘b‘,);$b = array( ‘c‘, ‘d‘, ‘e‘);$arr = $a + $b;//输出:Array( [0] => a [1] => b [2] => e)//=======================//指定数字索引$a = array( 1=>‘a‘, 2=>‘b‘,);$b = array( 4=>‘c‘, 7=>‘d‘);$arr = $a + $b;//输出:Array( [1] => a [2] => b [4] => c [7] => d)//=======================//指定索引,存在重复$a = array( ‘a‘=>11, ‘b‘=>22,);$b = array( ‘c‘=>33, ‘d‘=>44, ‘a‘=>55);$arr = $a + $b;//输出:Array( [a] => 11 [b] => 22 [c] => 33 [d] => 44)//=======================//混合指定索引和无索引1$a = array( ‘a‘, 2=>‘b‘,);$b = array( ‘c‘, ‘d‘, 10=>‘a‘, 4=>22);$arr = $a + $b;//输出:Array( [0] => a [2] => b [1] => d [10] => a [4] => 22)//=======================//混合指定索引和无索引2 $a = array( 2=>‘b‘, ‘a‘,);$b = array( ‘c‘, ‘d‘, 10=>‘a‘, 4=>22);$arr = $a + $b;//输出:Array( [2] => b [3] => a [0] => c [1] => d [10] => a [4] => 22)
array_flip和array+array的搭配使用(去掉两个数组中重复的值):
$a = array( ‘a‘, ‘b‘, ‘c‘);$b = array( ‘a1‘, ‘b1‘, ‘c‘);$arr = array_flip($a) + array_flip($b);print_r(array_keys($arr));//输出:Array( [0] => a [1] => b [2] => c [3] => a1 [4] => b1)
PHP array_flip() array_merge() array+array的使用总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。