设为首页 收藏本站
查看: 918|回复: 0

[经验分享] PHP array_flip() array_merge() array+array的使用总结

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-24 11:08:07 | 显示全部楼层 |阅读模式
  array_flip(array);
  //传递一个数组参数,对该数组的键、值进行翻转
  例如:



$a = array(
'a',
'b',
'c'
);
print_r(array_flip($a));
//输出为:
Array
(
[a] => 0
=> 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
=> 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
=> 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
)
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103412-1-1.html 上篇帖子: 在PHP中操作Excel 下篇帖子: PHP 魔术方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表