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的使用总结的更多相关文章
- array_flip() array_merge() array+array的使用总结
array_flip(array); //传递一个数组参数,对该数组的键.值进行翻转 例如: $a = array( 'a', 'b', 'c' ); print_r(array_flip($a)); ...
- PHP中array_merge和array相加的区别分析
今天处理一个这样的问题:如何获取字符键名相同值不同的两个数组值集合,用array_merge和数组相加都不可行,让我认真比较了下PHP中array_merge和array相加的区别 首先来看看键名是s ...
- PHP中array_merge函数与array+array的区别
在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,下面为大家介绍两者具体的使用区别. 区别如下: 当下标为数值时,array_me ...
- array_merge和array+的区别分析
记得之前发现很多朋友用过array+array的方式,今天索性再聊下这样的话题:如何获取字符键名相同值不同的两个数组值集合?让我认真比较了下PHP中array_merge和array相加的区别 首先来 ...
- PHP中array_merge和array+array的区别
在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,区别如下: 当下标为数值时,array_merge()不会覆盖掉原来的值,但ar ...
- php 通过array_merge()和array+array合并数组的区别和效率比较
众所周知合并两个数组可以使用array_merge(),这是php提供的一个函数.另外还可以通过 array 的方式来合并数组,这两种直接有什么区别,哪一个的效率更高呢? array_merge() ...
- hdu 6197 array array array
array array array Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] <c++>
LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] <c++> 给出排序好的 ...
- array_merge与array+array的区别
结果:
随机推荐
- HBTS(HBOI) 2019 真实退役记
Day 0 早上迷迷糊糊醒了不知道多久,反正差不多的时间被叫醒了,然后走去了火车站. 这次终于取到了蓝色的车票,以前去武汉的车票都取的红色不知道为什么-- 在火车上看了<悲伤逆流成河>,稍 ...
- sql server 2008 R2 配置管理工具打不开
使用 sql server 配置管理工具是报如下错误: 解决方法: 1 找出 sqlmgmproviderxpsp2up.mof 这个文件的位置 2 以管理员身份运行 mofcomp &quo ...
- eclipse添加dtd约束和xml约束的方法
struts-2.3.dtd dtd 文件的位置 导入上面的 dtd 约束 spring-beans-4.2.xsd 为主配置文件引入新的命名空间(约束)
- 【Qt开发】常用控件--QSpinBox和QDoubleSpinBox
QSpinBox和QDoubleSpinBox 是UI设计常用的控件. QSpinBox可用于显示和输入整数,并可以在显示框中添加前缀或后缀. QDoubleSpinBox可用于显示和输入小数,并可以 ...
- C 标准库 - string.h之memcmp使用
memcmp Compare two blocks of memory. Compares the first num bytes of the block of memory pointed by ...
- 有关查询和执行计划的DMV
转自:http://www.cnblogs.com/CareySon/archive/2012/05/17/2506035.html 查看被缓存的查询计划 SET TRANSACTION ISOLAT ...
- [PY3]——内置数据结构(7)——字典及其常用操作
字典及其常用操作Xmind图 关于字典 字典是一种key-value结构 字典是无序的 字典的定义 # {}大括号可以直接定义一个空字典 In [1]: d={};type(d) Out[1]: di ...
- DDD学习笔记(一)
最近开始筹备一个电商项目. 其实是公司的老本行了. 但今年公司希望在做项目的同时, 沉淀出一套针对电商的基础产品. 这样可以提高新项目的开发效率, 减少重复劳动. 那现如今, DDD(领域驱动设计)应 ...
- 【angular5项目积累总结】列表多选样式框(1)
憋不住想说一下:angular坑太多,各种教程各种不完整,官网还只是简单的画饼充饥,没办法只有自己研究自己总结,便于以后提高工作效率. 第一种: view code list.css :ho ...
- [译]用R语言做挖掘数据《四》
回归 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...