当前位置: 首页 > 技术随笔 > PHP 数组运算符入门详解

PHP 数组运算符入门详解

数组(array)几乎存在于所有的编程语言中。不过,与Java、JavaScript等编程语言不同的是,在PHP中,数组还支持使用数组运算符来进行运算,就像做加法运算一样简单,并且显得非常优雅直观。

目前,PHP中的数组运算符如下表所示:

运算符名称
+联合
==相等
===全等
!=或<>不等于
!==不全等

下面,我们结合具体的代码示例来逐个介绍PHP数组运算符。

联合(+)

联合,例如数组$a联合数组$b($a + $b),即是将数组$b中的元素附加到数组$a的后面,如果数组$b中某个元素的键名在数组$a中已经存在,则该元素被忽略掉(不需要附加),仍然使用数组$a中的元素。

<?php
//例1

//设置编码为UTF-8,以避免中文乱码
header('Content-Type:text/html;charset=utf-8');

$a = array('name' => '张三', 'age' => 18, 'sex' => '男');
$b = array('name' => '李四', 'age' => 19 , 'country' => '中国');
$c = $a + $b;
//由于数组$b中的键名name和age在数组$a中已经存在,因此联合的时候将会忽略掉数组$b中键名为name和age的元素。
print_r($c);
?>

上述示例的输出结果如下:

Array ( [name] => 张三 [age] => 18 [sex] => 男 [country] => 中国 )

接着,我们继续看下一个例子:

<?php
//例2

//设置编码为UTF-8,以避免中文乱码
header('Content-Type:text/html;charset=utf-8');

$a = array('张三', 18, '男');
$b = array('李四', 19, '中国');
$c = $a + $b;
//由于数组$a和数组$b,没有自定义键名,所以键名默认为索引数字,由于数组$b中的键名0、1、2在数组$a中都存在,所以$c实际上与$a一样。
print_r($c);
?>

该示例代码的运行结果输出如下:

Array ( [0] => 张三 [1] => 18 [2] => 男 )

PHP数组的联合运算符会将符号右侧数组的元素附加到符号左侧数组的元素后面,因此如果交换符号两侧数组的位置,将会得到不一样的结果:

<?php
//例3

//设置编码为UTF-8,以避免中文乱码
header('Content-Type:text/html;charset=utf-8');

$a = array('name' => '张三', 'age' => 18, 'sex' => '男');
$b = array('name' => '李四', 'age' => 19 , 'country' => '中国');
$c = $b + $a;	//交换数组顺序
print_r($c);
?>

例3代码的运行结果显示如下:

Array ( [name] => 李四 [age] => 19 [country] => 中国 [sex] => 男 )

相等(==)

PHP数组运算符"=="可以用来判断两个数组中是否具有相同的键/值对,我们使用"=="来比较上述示例中的$a和$b是否相等:

<?php
//例4

//设置编码为UTF-8,以避免中文乱码
header('Content-Type:text/html;charset=utf-8');

$a = array('name' => '张三', 'age' => 18, 'sex' => '男');
$b = array('name' => '李四', 'age' => 19 , 'country' => '中国');
var_dump($a == $b); //输出:bool(false)
?>

此外,PHP数组运算符"=="并不强制要求元素的类型和顺序都要完全相同,例如:

<?php
//例5

//设置编码为UTF-8,以避免中文乱码
header('Content-Type:text/html;charset=utf-8');

$a = array('name' => '张三', 'age' => '18');
$b = array('age' => 18, 'name' => '张三');
var_dump($a == $b); //输出:bool(true)

$a = array('张三', '18');  //实际上是array( 0 =>'张三', 1 => '18')
$b = array(18, '张三');  //实际上是array( 0 => 18, 1 => '张三')
//数组$a和$b中,看似是两个元素的值交换了位置,实际上却导致对应的键名0、1的顺序也跟着改变,因此数组$a和$b没有相同的键/值对。
var_dump($a == $b); //输出:bool(false)
?>

全等(===)

PHP数组运算符"==="与"=="的作用很相似,不过全等运算符"==="只有在数组的键/值对、顺序、类型都完全相同时,才为true。因此,上面的例5如果使用全等运算符"==="将会得到相反的结果。

<?php
//例5

//设置编码为UTF-8,以避免中文乱码
header('Content-Type:text/html;charset=utf-8');

$a = array('name' => '张三', 'age' => '18');
$b = array('age' => 18, 'name' => '张三');
var_dump($a === $b); //输出:bool(false)
?>

除上述运算符外,PHP数组运算符还有不相等(!=或<>)和不全等(!==),由于它们分别是相等(==)和全等(===)的取反判断,这里就不再赘述了。

2 0
我们认为: 用户的主要目的,是为了获取有用的信息,而不是来点击广告的。因此本站将竭力做好内容,并将广告和内容进行分离,确保所有广告不会影响到用户的正常阅读体验。用户仅凭个人意愿和兴趣爱好点击广告。
我们坚信:只有给用户带来价值,用户才会给我们以回报。
CodePlayer技术交流群1CodePlayer技术交流群1

帮朋友打一个硬广告:

P2P网贷系统(Java版本) 新年低价大促销,多年P2P技术积累,系统功能完善(可按需定制,可支持第三方存管、银行存管),架构稳定灵活、性能优异、二次开发快速简单。 另可提供二次开发、安装部署、售后维护、安全培训等一条龙服务。

外行看热闹,内行看门道。可以自信地认为,在系统设计上,比市面上的晓风、迪蒙、方维、绿麻雀、国融信、金和盛等P2P系统要好。
深圳地区支持自带技术人员现场考察源代码、了解主要技术架构,货比三家,再决定是否购买。

也可推荐他人购买,一旦完全成交,推荐人可获得实际售价 10% 的返现。
有意向者,详情请 点击这里 联系,工作时间立即回复。