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...])

//对两个或多个数组进行合并(传递一个数组参数也是可以的)

需要注意的是:

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

很好用的程序员在线画图软件

今天向大家推荐一个很好用的在线画图软件:今天向大家推荐一个很好用的在线画图软件:今天向大家推荐一个很好用的在线画图软件:(重要的事情说三篇)连接地址如下:https://www.processon.com/i/55e3195de4b0df…

java breakpoint_java断点

第一步:用firefox运行程序,当点击保存,提示保存失败后,启动firebug通过请求找到addNew.ezt出现错误,在eztnews.xml里通过ctrlF查找找到请求执行的类和方法找到NewsAction类的doAddNew方法然后在通过找到NewsActions.ja…

1)C++对象大小计算

C对象的大小不同的编译器的实现是不一样的,以下仅讨论.net2003,其他编译的可能出现的结果以下也做了分析和猜测。在反推不同编译器实现的C对象的大小时。对齐是一个很重要也容易被遗忘的问题。class A{}; 类A是一个空类,但是它的大小并不…

OC之ARC环境中的循环strong问题

2019独角兽企业重金招聘Python工程师标准>>> main.m文件&#xff1a; #import <Foundation/Foundation.h> #import "Person.h" #import "Dog.h"int main() {Person *p [[Person alloc] init];Dog *d [[Dog alloc] init];p.dog d;d.per…

java metric_java版的Metric工具介绍

Metrics是一个给JAVA服务的各项指标提供度量工具的包&#xff0c;在JAVA代码中嵌入Metrics代码&#xff0c;可以方便的对业务代码的各个指标进行监控&#xff0c;同时&#xff0c;Metrics能够很好的跟Ganlia、Graphite结合&#xff0c;方便的提供图形化接口。基本使用方式直接将…

15_采用Pull解析器解析和生成XML内容

java还提供SAX和DOM用于解析XML Android还集成了Pull解析器——推荐 package cn.itcast.service;import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1…

Android自定义view之圆形进度条

本节介绍自定义view-圆形进度条思路&#xff1a;根据前面介绍的自定义view内容可拓展得之&#xff1b;1&#xff1a;新建类继承自View2&#xff1a;添加自定义view属性3&#xff1a;重写onDraw(Canvas canvas)4&#xff1a;实现功能下面上代码1.自定义view代码&#xff1a; pub…

java二级考试备考_2017计算机二级考试《JAVA》备考测试题「带答案」

2017计算机二级考试《JAVA》备考测试题「带答案」为确保同学们将所涉及的考点全面复习到位&#xff0c;让大家充满信心的步入考场&#xff0c;以下是百分网小编搜索整理的一份计算机二级考试《JAVA》备考测试题【带答案】&#xff0c;供参考练习&#xff0c;希望对大家有所帮助…

Thinkphp 关联模型和试图模型区别

关联模型主要在多表操作时使用&#xff0c;比如 user表&#xff0c;user_role表&#xff0c;role表 user_role字段&#xff1a;uid,rid&#xff0c;它作为中间表&#xff0c;负责将user和role之间的&#xff0c;1对1&#xff0c;1对多&#xff0c;多对多的关系进行保存。 这时要…

windows7下安装php的imagick和imagemagick扩展教程

这篇文章主要介绍了windows7下安装php的imagick和imagemagick扩展教程,同样也适应XP操作系统,Win8下就没测试过了,需要的朋友可以参考下 最近的PHP项目中&#xff0c;需要用到切图和缩图的效果&#xff0c;在linux测试服务器上很轻松的就安装好php imagick扩展。但是在本地wind…

java 线程间通信 handler_Handler不同线程间的通信

转http://www.iteye.com/problems/69457Activity启动后点击一个界面按钮后会开启一个服务(暂定为padService)&#xff0c;在padService中会启动一个线程(暂定为Thread-3)发起Socket连接。我们项目中使用mina作为socket通信框架&#xff0c;用过mina的同志们应该熟悉&#xff0c…

通过mysql show processlist 命令检查mysql锁的方法

作者&#xff1a; 字体&#xff1a;[增加 减小] 类型&#xff1a;转载 时间&#xff1a;2010-03-07show processlist 命令非常实用&#xff0c;有时候mysql经常跑到50%以上或更多&#xff0c;就需要用这个命令看哪个sql语句占用资源比较多&#xff0c;就知道哪个网站的程序问题…

java流类图结构_java学习之IO流(学习之旅,一)

个人在学习IO流的时候看到如下所示java 流类图结构的时候&#xff0c;我的感想是&#xff0c;这么多处于蒙的状态。Java流类图结构这么多&#xff0c;没有分类不好学&#xff0c;那我们就慢慢一口一口的吃&#xff0c;这样每天学习一点就好了&#xff0c;其实很多类并不是常用的…

php 安装xdebug扩展

php 扩展获取地址 http://pecl.php.net/package/ 编译安装的过程 wget http://pecl.php.net/get/xdebug-2.2.2.tgz tar -zxvf xdebug-2.2.2.tgz cd xdebug-2.2.2/ /data/klj/php/bin/phpize ./configure --enable-xdebug --with-php-config/data/klj/php/bin/php-config mak…

通过VB向SQL Server数据库中录入数据

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)一、数据录入通过VB向SQL Server数据库中录入数据&#xff0c;可以使用数据绑定控件录入数据与使用SQL语句录入1.利用数据绑定控件录入数据使用数据绑定控件录入数据可以运行较少的代码&…

拨打电话 java_简单拨打电话程序

众所周知,对于一个手机,能拨打电话是其最重要也是最常用的一个功能.而在Android里是怎么样实现拨打电话的程序呢?我在这里写了一个简单的拨打电话的Demo,供大家参考.一共分为5个步骤.Step 1:新建一个Android工程,命名为phoneCallDemo.Step 2:设计程序的界面,打开main.xml把内容…

Apple开发者账号申请学习方式

http://jingyan.baidu.com/article/414eccf610e7c76b431f0a94.html https://developer.apple.com/wwdc/schedule/转载于:https://www.cnblogs.com/wcLT/p/4167707.html

SQLite/嵌入式数据库

SQLite/嵌入式数据库 的项目要么不使用数据库&#xff08;一两个文配置文件就可以搞定&#xff09;&#xff0c;要么就会有很多的数据&#xff0c;用到 postgresql&#xff0c;操练sqlite的还没有。现在我有个自己的小测试例子&#xff0c;写个数据库对比的小项目例子&#xff…

python继承属性_Python中的属性继承问题

不久前&#xff0c;我在开发一个python应用程序&#xff0c;我在类中使用了很多属性&#xff0c;但是当我试图重写派生类中基类的访问器的行为时&#xff0c;我遇到了麻烦。这是我的问题的草图&#xff1a;class Person(object):propertydef name(self):return self._namename.…

王爽汇编语言实验十

实验十 3.数值显示(以下程序附带测试程序) 1 ;名称: dtoc2 ;功能: 将dword型数据转变为表示十进制数的字符串,字符串以0为结尾3 ;参数: (ax)dword型数据低字4 ; (dx)dword型数据高字5 ; ds:si指向字符串的首地址6 ;返回: 无7 assume cs:code8 data segment9…