当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

4.12对数组的集合处理

9/17/2020 9:26:54 PM 人评论

4.12对数组的集合处理

4.12 对数组的集合处理

函数array_intersect()可以用来计算数组的交集,其语法如下所示。


array array_intersect(array$arr1,array

$arr2[,$arr……])


函数array_intersect()返回一个数组,该数组包含了在参数数组$arr1中出现,同时也出现在所有其他参数数组中的值,注意键名保留不变。代码4-22演示了该函数的用法。

代码4-22 计算数组之间的交集4-22.php


01 <?php

02 $array1=array(

03 'a'=>'green',

04 'red',

05 'blue'

06 );//定义数组$array1

07

08 $array2=array(

09 'b'=>'green',

10 'yellow',

11 'red'

12 );//定义数组$array2

13

14 $result=array_intersect($array1,$array2);//获取两数组的交集

15 echo'<pre>';

16 print_r($result);

17 ?>


【代码解析】这段代码的执行结果如图4-22所示。前面提到过,函数array_intersect()返回的是一个数组,所以代码第14行的$result是一个比较结果,也是一个数组。代码第16行输出这个数组。

图 4-22 计算数组之间的交集

PHP还提供了一个函数,可以带索引来计算数组之间的交集。这意味着,数组之间不仅元素要一样,而且索引也一样时,才能满足交集条件。这个函数是array_intersect_assoc(),其语法如下所示。


array array_intersect_assoc(array$arr1,array$arr2[,$arr……])


函数array_intersect_assoc()返回一个数组,该数组中包含了参数数组$arr1、$arr2……中元素相同且索引值也相同的所有元素。代码4-23演示了该函数的用法,如下所示。

代码4-23 带索引计算数组之间的交集4-23.php


01 <?php

02 $arr1=array(

03 'a'=>'green',

04 'b'=>'brown',

05 'c'=>'blue',

06 'red',

07 'p'=>'pink'

08 );//定义数组$arr1

09

10 $arr2=array(

11 'a'=>'green',

12 'yellow',

13 'red',

14 'p'=>'pink',

15 );//定义数组$arr2

16

17 $result_array=array_intersect_assoc($arr1,$arr2);//带索引计算两数组的交集

18

19 echo'<pre>';

20 print_r($result_array);

21 echo'</pre>';

22 ?>


【代码解析】这段代码的执行结果如图4-23所示。与上一个案例的代码作对比,读者会发现,上一个案例中green元素的索引并不一致,一个是a,一个是b。但本例只有两者索引一致的情况下才能算相同,如元素red没有索引,读者可以看到,结果中它也不相同,所以没有输出此元素。

图 4-23 带索引计算数组之间的交集

除了可以计算数组之间的交集之外,PHP还提供函数完成数组之间差集的计算。函数array_diff()用来计算数组之间的差集,其语法如下所示。


array array_diff(array$arr1,array$arr[,$arr……])


函数array_diff()返回一个数组,该数组包括了所有在参数数组$arr1中出现,但是不在任何其他参数数组中出现的值。注意索引保留不变。和函数array_intersect_assoc()类似,函数array_diff_assoc()带索引计算数组的差集,其语法如下所示。


array array_diff_assoc(array$arr,array$arr[,$arr……])


函数array_diff_assoc()返回一个数组,该数组包括了所有在参数数组$arr1中出现,但是不在任何其他参数数组中出现的值。

注意 array_diff_assoc()和array_diff()不同的是,该函数将数组索引名也用于比较。函数array_diff()和array_diff_assoc()的用法类似于函数array_intersect()和array_intersect_assoc(),这里就不再重复举例说明其用法。

相关教程

共有条评论 网友评论

验证码: 看不清楚?