您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
Ready 发布于2013年08月29日 05:36 最近更新于 2019年06月01日 11:46

原创 PHP 数组运算符入门详解

19 次浏览 读完需要≈ 9 分钟 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数组运算符还有不相等(!=或<>)和不全等(!==),由于它们分别是相等(==)和全等(===)的取反判断,这里就不再赘述了。

  • CodePlayer技术交流群1
  • CodePlayer技术交流群2

0 条评论

撰写评论