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. 如果数组中的键名存在以上的组合情况,则以显式指定键名的优先
  5. 总结一点是,他要保证合并后的数组索引不能重复,若没指定键名或指定键名为数字,则结果按从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
)

转载于:https://www.cnblogs.com/fanchangfa/p/4155274.html

PHP array_flip() array_merge() array+array的使用总结相关推荐

  1. PHP中array_merge函数与array+array的区别

    在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,下面为大家介绍两者具体的使用区别. 区别如下: 1当下标为数值时,array_m ...

  2. php 通过array_merge()和array+array合并数组的区别和效率比较

    众所周知合并两个数组可以使用array_merge(),这是php提供的一个函数.另外还可以通过 array 的方式来合并数组,这两种直接有什么区别,哪一个的效率更高呢? array_merge() ...

  3. 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++> 给出排序好的 ...

  4. 成功解决TypeError: Singleton array array('data_input/xgboost/data_RentListingInquries/RentListingInqurie

    成功解决TypeError: Singleton array array('data_input/xgboost/data_RentListingInquries/RentListingInqurie ...

  5. 关于array.sort(array,array)

    关于array.sort(array,array) // 基于第一个 System.Array 中的关键字,使用每个关键字的 System.IComparable 实现,对两个一维 System.Ar ...

  6. array,array.array,np.array的区别

    list.array.array.numpy.array的区别 list,不限定数据类型.使用起来非常灵活,但带来的缺点是速度相对较慢,因为对每一个元素要检查数据类型: myList = [i for ...

  7. PHP中array_merge和array相加的区别分析

    首先来看看键名是string,两者区别: <?php $arr1 = array('a'=>'PHP'); $arr2 = array('a'=>'JAVA'); //如果键名为字符 ...

  8. array_merge与array+array的区别

    2019独角兽企业重金招聘Python工程师标准>>> 两个的区别是: 1.数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用"+"合并数组则会 ...

  9. array.array python yhzf

    关于array: Python 本身没有数组这个说法, 有的就是list和tuple, list就具有其他语言中的数组特性. 至于list和tuple的区别,在于list可以在运行时修改内容和大小,t ...

最新文章

  1. 结对编程之四则运算(马仪生、李瑞恒)
  2. date new 转换时区_Pandas 时间序列 时区控制
  3. username is marked non-null but is null
  4. 汇编语言——100个数中的最大数
  5. 2.1.Python字符串处理(去掉空格或者特殊字符、替换操作、查找操作、判断操作、分割合并操作、字符串文档)
  6. 某个软件调用目标异常_线上RPC远程调用频繁超时问题排查,大功臣Arthas
  7. 生成器模式 - 让配置代码更优雅
  8. SAP Spartacus把指定产品添加到购物车的API
  9. SAP Spartacus url里默认electronics-spa的由来
  10. arm-linux 交叉编译 mp4v2
  11. Fantasia (Tarjan+树形DP)
  12. 图片大_2020跨年图片 元旦快乐祝福图片 2019再见2020你好图片大全 新年图片
  13. 在JScript中运行应用程序
  14. 输入2个正整数lower和upper(lower_题库 | 华为研发工程师编程题型介绍及解析 第 2 期...
  15. pixhawk硬件设计粗略解析
  16. 细粒度分类:Hierarchical Bilinear Pooling(HBP),分级双线性池化(一)
  17. 网站权重大有用处,枫树seo教你一键进行网站权重查询
  18. NMI(Normalized Mutual Information)
  19. 蜗蜗的毛衣花样c++
  20. 修改ubuntu中ens33的

热门文章

  1. 【HDU - 2553】N皇后问题 (dfs经典问题,回溯,搜索)
  2. php获取location,php获取header[‘location’]信息常见问题
  3. w3cschool php 调整图片尺寸,PHP_php修改上传图片尺寸的方法,本文实例讲述了php修改上传图 - phpStudy...
  4. leetcode10. 正则表达式匹配 一道没有解释的字符串dp困难题
  5. Windows下如何用C语言清空特定文件夹中的所有文件
  6. Linux(13)-文件权限,chmod
  7. 算法(18)-leetcode-剑指offer2
  8. java placeholder_java – 如何在JTextfield中设置像Placeholder一样的文本
  9. www.python123.org_python爬虫-requests
  10. Python学习1 基础语法 数据类型 计算机基础