设为首页 收藏本站
查看: 1433|回复: 0

[经验分享] PHP开发笔记系列(九)- 数组(四)

[复制链接]

尚未签到

发表于 2017-3-28 15:41:11 | 显示全部楼层 |阅读模式
      经过《PHP开发笔记系列(九)- 数组(一)》
、《PHP开发笔记系列(九)- 数组(二)》
、《PHP开发笔记系列(九)- 数组(三)》
三篇的关于数组的使用后,本篇《PHP开发笔记系列(九)- 数组(四)》
将把Php数组的最后一部分,数组的集合处理。

  


      1. 合并数组

      在平常的使用中,我们可能需要从数据库中查询两部分数据,分别是两个数组,然后融合两个数组得到一个结果。要达到这样的效果,需要用到array_merge()函数,对于数值键数组,两个数组中的元素会叠加,即使值相同,也不会覆盖前面的元素,因此返回结果的数组长度等于两个数组之和。如下:


file: array_merge.php
url: http://localhost:88/array/array_merge.php
<?php
$number = array(1, 2, 3, 4, 5);
$letter = array('a', '1', 'b', '2', 'c');
$result = array_merge($number, $letter);
print_r($result);
?>
      对于关联键数组,如果键相同,则对应的值会被后面的元素覆盖。如下:


file: array_merge.php
url: http://localhost:88/array/array_merge.php
<?php
$student = array('s1'=>'1st student', 's2'=>'2nd student', 's3'=>'3rd student');
$new_student = array('s1'=>'1st new student', 's2'=>'2nd student', 's3'=>'3rd new student');
$result = array_merge($student, $new_student);
print_r($result)
?>
      2. 递归追加数组

      array_merge_recursive()函数与array_merge()函数相同,不同的是前者会把键值相同的两个元素的值合并在一起,形成一个新的数组并以原有的键作为数组名。如下:


file: array_merge_recursive.php
url: http://localhost:88/array/array_merge_recursive.php
<?php
$student = array('s1'=>'1st student', 's2'=>'2nd student', 's3'=>'3rd student');
$new_student = array('s1'=>'1st new student', 's2'=>'2nd student', 's3'=>'3rd new student');
$result1 = array_merge_recursive($student, $new_student);
print_r($result1)
?>
      3. 键数组与值数组合并

      array_combine()函数可以将一个键数组与一个值数组合并,这两个数组需要长度相同,不能为空。如下:


file: array_combine.php
url: http://localhost:88/array/array_combine.php
<?php
$short_name = array('MJ', 'RM', 'PP', 'MC', 'KD');
$full_name = array('Michael Jackson', 'Rose Mary', 'Peter Pan', 'Mike chan', 'Kelvin Durant');
$result = array_combine($short_name, $full_name);
print_r($result);
?>
      4. 数组拆分

      array_slice()函数与array_splice()函数接受三个参数,第一个是输入数组,第二个是offset,第三个是length,用于从输入数组截取offset开始,截取length长度的元素,以数组形式返回。length可以为正数或负数。如下:


file: array_slice.php
url: http://localhost:88/array/array_slice.php
<?php
$short_name = array('MJ', 'RM', 'PP', 'MC', 'KD');
// 从第2为开始,截取2个元素
$result = array_slice($short_name, 2, 2);
print_r($result);
echo "<br/>==================<br/>";
// 若length为负数,则截取到count($short_name)-|length|位置结束
$result1 = array_slice($short_name, 2, -1);
print_r($result1);
?>
      array_splice()函数与array_slice()函数类似,不同的是前者会删除数组中从offset开始到offset+length结束的所有元素,并以数组形式返回被删除的元素。


file: array_splice.php
url: http://localhost:88/array/array_splice.php
<?php
$short_name = array('MJ', 'RM', 'PP', 'MC', 'KD');
// 从第2为开始,截取2个元素
$result = array_splice($short_name, 2, 2);
print_r($result);
echo "<br/>==================<br/>";
$full_name = array('Michael Jackson', 'Rose Mary', 'Peter Pan', 'Mike chan', 'Kelvin Durant');
// 若length为负数,则截取到count($short_name)-|length|位置结束
$result1 = array_splice($full_name, 2, -1);
print_r($result1);
?>
      5. 数组交集

      array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。


file: array_intersect.php
url: http://localhost:88/array/array_intersect.php
<?php
$arr1 = array('MJ', 'RM', 'PP', 'MC', 'KD');
$arr2 = array('MJ', 'RM', 'PP1', 'MC1', 'KD1');
$arr3 = array('MJ', 'RM', 'PP2', 'MC2', 'KD2');
// 比较时,只有两个元素有相同的数据类型时,才被认为相等。
$intersect = array_intersect($arr1, $arr2, $arr3);
print_r($intersect);
?>
      求关联数组的交集时,用到的array_intersect_assoc()与array_intersect()相同,只不过在考虑是会考虑数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值才被返回到结果数组中。如下:


file: array_intersect_assoc.php
url: http://localhost:88/array?array_intersect_assoc.php
<?php
$arr1 = array('MJ'=>'Michael Jackson', 'RM'=>'Rose Mary', 'PP'=>'Peter Pan');
$arr2 = array('MJ'=>'Michael Jackson', 'ML'=>'Mary Lee', 'RM'=>'Rose Mary');
// 只有键和值都相等的才会被返回
$intersect = array_intersect_assoc($arr1, $arr2);
print_r($intersect);
?>
      6. 数组差集

      array_diff()函数返回出现在第一个数组中但其他输入数组中没有的值。这个函数的功能与array_intersect()相反。


file: array_diff.php
url: http://localhost:88/array/array_diff.php
<?php
$arr1 = array('MJ', 'RM', 'PP', 'MC', 'KD');
$arr2 = array('MJ', 'RM', 'PP1', 'MC1', 'KD1');
$arr3 = array('MJ', 'RM', 'PP2', 'MC2', 'KD2');
$diff = array_diff($arr1, $arr2, $arr3);
print_r($diff);
?>
      求关联数组的差集时,用到的array_diff_assoc()与array_diff()相同,只不过在考虑是会考虑数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值才被返回到结果数组中。如下:


file: array_diff_assoc.php
url: http://localhost:88/array/array_diff_assoc.php
<?php
$arr1 = array('MJ'=>'Michael Jackson', 'RM'=>'Rose Mary', 'PP'=>'Peter Pan');
$arr2 = array('MJ'=>'Michael Jackson', 'ML'=>'Mary Lee', 'RM'=>'Rose Mary');
// 只有键和值都相等的才会被返回
$diff = array_diff_assoc($arr1, $arr2);
print_r($diff);
?>
      还有其他的shuffle()函数、array_chunk()函数、array_sum()函数用得相对较少,就不再讲述。

  


  本文地址:
http://ryan-d.iteye.com/blog/1566777

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-356717-1-1.html 上篇帖子: php文件目录操作类 下篇帖子: PHPSTORM XMAPP XDEBUG 整合PHP 调试开发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表