热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP学习笔记之数组值及数组遍历和排序

数组值的操作1值的析取PHP中,用list来析取数组中的值,如list($a,$b)$array,如果list中的值多于数组个数,list中多余的值会设为NULL,

数组值的操作

1.值的析取

PHP中,用list来析取数组中的值,如list($a, $b) = $array,如果list中的值多于数组个数,list中多余的值会设为NULL,也可以用逗号来跳过数组中的值,如list($a, ,$b) = $array。

2.划分数组

如果想取得子数组,可以用array_slice(array, offset, length);来取得。它返回一个新的下标从0开始的数组。如果原数组的下标是字符串,好像是没有什么意义的,最好不要用,可以用array_splice来取得子串。

3.将数组分为多个数组

用array_chunk可以把数组分成一个二维数组。详细的可以通过链接看官方的说明。

4.键和值

array_keys($array),取得由数组索引组成的数组

array_value($array),取得由数组值组成的数组,索引从0开始重新分配。

array_key_exists($key, array),元素是否存在检查。

array_splice, 删除插入元素。

5.数组和变量之间的转换

extract(array) 把数组变成变量

compact() 把变量变成数组

6.数组的查找

in_array(array, ) 返回元素是否在数组中存在。

array_search() 返回被找到元素的索引。

7.整个数组函数

array_ sum() 计算数组的和。

array_ merge() 合并两个数组。

array_ diff() 两个数组之间的不同值。

array_ filter() 过滤元素

8.集合、堆栈、队列

array_ unique() 取两个数组的合集,如果值相同,保留前一个数组的索引。

array_ intersect() 取两个数级的交集,保留第一个数组的索引。

array_ push() 加入堆栈。

array_ pop() 弹出堆栈。

array_ shift() 加入队列。

array_ unshift() 弹出队列。

1.简单的遍历

PHP中,数组最简单的遍历方法莫过于for和foreach了,其中foreach有两种写法,一种只遍历值、另一种遍历索引和值,具体可以看如下代码.

  1. $test01 = array('a''b''c'); 
  2. // for 
  3. for ($i = 0; $i < count($test01); $i++) {      
  4.     echo $test01[$i];  
  5. }  
  6. // foreach value only  
  7. foreach ($test01 as $value) { 
  8.     echo $value;  
  9. }  
  10. // foreach key and value  
  11. $test01 = array(&#39;a&#39; => &#39;aaaa&#39;&#39;b&#39; => &#39;bbbb&#39;&#39;c&#39; => &#39;cccc&#39;); 
  12. foreach ($test01 as $key => $value) { 
  13.     echo "$key => $value"
  14. }  

2.迭代器遍历

PHP中,迭代遍历主要要用到以下函数。

current() 迭代的当前元素。

reset() 重新移动到第一个元素并返回它。

next() 移动到下一个元素并返回它。

prev() 移动到上一个元素并返回它。

end() 移动到最后一个元素并返回它。

each() 以数组的形式返回当前元素的索引和值,并移动到下一个迭代。

key() 返回当前的索引。

array_ walk() 为每一个元素调用函数。

array_ reduce() 为每一个元素依次计算。

实例代码如下:

  1. $test01 = array(&#39;a&#39; => &#39;aaaa&#39;&#39;b&#39; => &#39;bbbb&#39;&#39;c&#39; => &#39;cccc&#39;); 
  2. while (list($key$value) = each($test01)) { 
  3.     echo "$key => $value" . "n"
  4. array_walk($test01, walk_test); 
  5. function walk_test($key$value) { 
  6.     echo "walk: $key => $value" . "n"
  7. $test02 = array(1, 2, 3, 4, 5); 
  8. echo array_reduce($test02, reduce_test); 
  9. function reduce_test($run_result$current_value) { 
  10.     return $run_result + $current_value * $current_value

3.数组的排序

在PHP中,排序方式有三种,通过索引排序、通过值排序(不保留原索引)、通过值排序(保留原索引)。每种又分为升序、降序以及用户定义顺序三个函数。它们分别如下:

通过索引排序:①升序 ksort() ②降序 krsort() ③用户定义顺序 uksort()

不保留原索引值排序:①升序 sort() ②降序 rsort() ③用户定义顺序 usort()

保留原索引值排序:①升序 asort() ②降序 arsort() ③用户定义顺序 uasort()

在PHP中,也可以用array_multisort来一次排序多个数组,不过项目中可能用得比较少。

翻转数组,把数字索引翻转,索引重新从0开始:array_reverse()

把索引和值调换:array_flip()

随机顺序:shuffle()


推荐阅读
  • 如何在Faceu激萌中设置和使用妆容切换特效?
    本文将详细介绍如何在Faceu激萌应用中设置和使用妆容切换特效,帮助用户轻松实现创意拍摄。无论是新手还是有经验的用户,都能从中受益。 ... [详细]
  • 本文介绍了拍摄高质量Vlog所需的设备,包括索尼A7 III相机、蔡司镜头、罗德麦克风、单反稳定器、苹果手机及其配件、灯光设备等。此外,还探讨了后期制作所需的软件工具,如剪辑、特效和调色软件。无论你是业余爱好者还是专业创作者,选择合适的设备至关重要。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 探讨一个老旧 PHP MySQL 系统中,时间戳字段不定期出现异常值的问题及其可能原因。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 郑州大学在211高校中的地位与排名解析
    本文将详细解读郑州大学作为一所位于河南省的211和双一流B类高校,在全国211高校中的地位与排名,帮助高三学生更好地了解这所知名学府的实力与发展前景。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 电子元件封装库:三极管、MOS管及部分LDO(含3D模型)
    本资源汇集了常用的插件和贴片三极管、MOS管以及部分LDO的封装,涵盖TO和SOT系列。所有封装均配有高质量的3D模型,共计96种,满足日常设计需求。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 小红书提高MCN机构入驻门槛,需缴纳20万元保证金
    近期,小红书对MCN机构的入驻要求进行了调整,明确要求MCN机构在入驻时需缴纳20万元人民币的保证金。此举旨在进一步规范平台内容生态,确保社区的真实性和用户体验。 ... [详细]
author-avatar
5257wals_220
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有