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...])
//对两个或多个数组进行合并(传递一个数组参数也是可以的)
需要注意的是:
1、如果数组中没有键名,则不管他们的值的交集存不存在重复,最终结果都会以下标为0开始的数组返回,值的顺序依次为array1、array2..;
2、如果数组中设置非数字索引,且键名存在重复,则该键值为最后一个键名对应的值(覆盖前面);
3、如果数组是指定数字索引,则结果的键名会以从0开始的数组重新进行索引;
4、如果数组中的键名存在以上的组合情况,则以显式指定键名的优先;
总结一点是,他要保证合并后的数组索引不能重复,若没指定键名或指定键名为数字,则结果按从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有一定的区别。
1、若数组没有指定索引,则他会先把array1的先赋值给结果,假设array1长度为3,array2长度为5,则他会把array2[3]、array2[4]追加到结果后面,array2[0-2]直接忽略;
2、若为数组指定了索引,不管为数字还是非数字索引,最终结果都会保留指定的索引,若两个数组存在重复的索引,则以第一个为最终结果(覆盖后面);
3、指定索引和无索引混合的情况下,先看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
)
复制代码
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)); ...
- 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的区别
结果:
随机推荐
- cufflinks install
liuhui@pine:~/bin/cufflinks-master$ ./configure --with-bam=/usr/local/include/bam checking for a BSD ...
- BZOJ 1121: [POI2008]激光发射器SZK
1121: [POI2008]激光发射器SZK Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 792 Solved: 653[Submit][Sta ...
- 【caffe】执行训练
@tags caffe 训练 是在windows平台上. 主要是使用/caffe.exe,配合动作参数train,以及指定solver文件.e.g.: cd %caffe_root% %caffe_b ...
- 【BZOJ-3033】太鼓达人 欧拉图 + 暴搜
3033: 太鼓达人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 204 Solved: 154[Submit][Status][Discuss] ...
- wordpress /wp-content/plugins/wp-symposium/server/php/UploadHandler.php File Arbitrary Upload Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link:2. 漏洞触发条件3. 漏洞影响范围4. 漏 ...
- 基本概率分布Basic Concept of Probability Distributions 1: Binomial Distribution
PDF下载链接 PMF If the random variable $X$ follows the binomial distribution with parameters $n$ and $p$ ...
- shell text process code
shell 命令处理文本: 1. 批量处理该目录下的文件,ls | while read l ; do echo $l ; done > b.txt 2. 批量处理文件的每一行 , cut - ...
- zabbix监控模式、分布式、自动化
适用场景: 1.监控主机多,性能瓶颈 2.多机房,防火墙 zabbix监控模式 针对agent来说 - 被动模式 - 主动模式(主动汇报服务端) 1)当监控主机超过300台,建议使用主动模式 2)当队 ...
- BZOJ3207: 花神的嘲讽计划Ⅰ
显然hash,然后stl随便搞. #include<bits/stdc++.h> #define N 100005 using namespace std; typedef unsigne ...
- 在Linux下安装和使用MySQL
[简 介] 想使用Linux已经很长时间了,由于没有硬性任务一直也没有系统学习,近日由于工作需要必须使用Linux下的MySQL.本以为有Windows下使用SQL Server的经验,觉得在Linu ...