'; ;
?>
遍历多维数组时,要使用循环嵌套逐层进遍历。在此就不用代码列出来了。
2、使用foreach语句遍历数组
既然for循环语句在PHP中并不常用,那么就让我们来看一下foreach到底有什么可取之处吧!
foreach语句有两种语法格式,第二种比较次要但却是第一种有用的扩展。
第一种语法格式:
- foreach(array_expression as $value ){
-
- 循环体
-
- }
第二种语法模式:
- foreach(array_expression as $key => $value){
-
- 循环体
-
- }
3、联合使用list()、each()、和while()、循环遍历数组
each()函数
each()函数需要传递一个数组作为参数,返回数组中当前元素的键/值对,并向后移动数组指针到下一个元素的位置。键/值对被返回为带有四个元素的关联和索引混合的数组,键名分别为0、1、key和value。其中键名0和key对应的值是一样的,是数组元素的键名,1和value则包含有数组元素的值。如果内部指针越过了数组的末端,则each()返回FALSE。each()函数的使用如下所示,代码如下:
-
- $contact=array("ID"=>1,"姓名"=>"高某","http://www.phpfensi.com公司"=>"A公司","地址"=>"北京市");
-
- $id=each($contact);
- print_r($id);
- $name=each($contact);
- print_r($name);
- $company=each($contact);
- print_r($company);
- $address=each($contact);
- print_r($address);
- $no=each($contact);
- var_dump($no);
-
- ?>
list()函数
这不是真正的函数,而是PHP的语言结构。list()用一步操作给一组变量进赋值,即把数组中的值赋给一些变量。list()仅能用于数字索引的数组并假定数字索引从0开始。语法格式如下所示:
list(mixed varname,mixed ...)=array_expression //list()语句的语法格式
list()语句和其它函数在使用上有很大的区别,并不是直接接收一个数组作为参数。而是通过“=”去处符以赋值的方式,将数组中每个元素的值,对应的赋给list()函数中的每个参数。list()函数又将它中的每个参数转换为直接可以在脚本中使用的变量。使用方法如下,实例代码如下:
- $info=array('coffee','brown','caffeine');
-
- list($drink,$color,$power)=$info;
- echo "$drink is $color and $power makes it special.n";
-
- list($drink, ,$power)=$info;
- echo "$drink has $power.n";
-
- list(,,$power)=$info;
- echo "I need $power!n";
- ?>
通过上例了解list()函数的用法之后,将each()函数和list()函数结合起来使用。代码如下:
- $contact=array("ID"=>1,"姓名"=>"http://www.111Cn.Net","公司"=>"A公司","地址"=>"北京市");
- list($key,$value)=each($contact);
- echo "$key=>$value";
- ?>
while()循环遍历数组
while()循环的语法格式如下:
- while( list($key,$value) = each(array_expressin) ){
- 循环体;
- }
使用这种组合改写前面使用foreach遍历过的一维数组,代码如下所示:
-
- $contact=array("ID"=>1,
- "姓名"=>"高某",
- "公司"=>"A公司",
- "地址"=>"北京市",
- "电话"=>"(010)987665432",
- "EMAIL"=>"gao@php.com"
- );
-
- echo '
一个联系人信息:'
;
- while(list($key,$value) = each($contact) ){
- echo "
- $key:$value
";
- }
- echo '';
- ?>
4、数组内部指针控制函数遍历数组
对于数组指针的控制PHP提供了以下几个内部函数可以利用。
》》current():是取得目前指针位置的内容资料
》》key():用来读取目前指针所指向资料的索引值
》》next():将数组中的内部指针移动到下一个单无
》》prev():将数组的内部指针倒回一位
》》end():将数组的内部指针向最后一个元素
》》reset():将目前指针无条件移至第一个索引位置
这些函数的参数都只有一个,就是要操作的数组本身。在下面的示例中,将使用这些数组指针函数控制数组中元素的读取顺序,代码如下所示:
-
- $contact = array("ID"=>1,
- "姓名"=>"高某",
- "公司"=>"A公司",
- "地址"=>"北京市",
- "电话"=>"(010)98765432",
- "EMAIL"=>"gao@php.com"
- );
-
-
- echo '第一个元素:'.key($contact).'=>'.current($contact).'
';
- echo '第一个元素:'.key($contact).'=>'.current($contact).'
';
-
- next($contact);
- next($contact);
- echo '第三个元素:'.key($contact).'=>'.current($contact).'
';
-
- end($contact);
- echo '最后一个元素:'.key($contact).'=>'.current($contact).'
';
-
- prev($contact);
- echo '最后第二个元素:'.key($contact).'=>'.current($contact).'
';
-
- reset($contact);
- echo '又回到了第一个元素'.key($contact).'=>'.current($contact).'
';
- ?>
数据排序
•sort() 函数用于对数组单元从低到高进行排序。
•rsort() 函数用于对数组单元从高到低进行排序。
•asort() 函数用于对数组单元从低到高进行排序并保持索引关系。
•arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。
•ksort() 函数用于对数组单元按照键名从低到高进行排序。
•krsort() 函数用于对数组单元按照键名从高到低进行排序。
例子代码如下:
- $arr = array("b", "a", "c");
- sort($arr);
- print_r($arr);
- ?>
-
-
在本例中, $arr 数组单元被按照字母顺序排序,而数组单元经过排序后,键值重新分配。
rsort()
PHP rsort() 函数行为与 sort() 相反,对数组单元进行由高到低排序,请参考 sort() 函数使用。
asort()
PHP asort() 函数用于对数组单元从低到高进行排序并保持索引关系,如果成功则返回 TRUE,失败则返回 FALSE。
语法:bool asort( array &array [, int sort_flags] )
可选参数 sort_flags 用以改变排序的行为,具体参见 sort()。
实例代码如下:
- $arr = array("b", "a", "c");
- asort($arr);
- print_r($arr);
- ?>
-
-
注:本文内容参考于《细说PHP》中的数组部分,仅作学习之余的个人笔记。
推荐阅读
-
本文介绍了如何通过配置路由的 meta 字段,确保 Vue 2 项目中的导航栏在页面刷新或内部按钮跳转时,始终保持正确的 active 样式。具体实现方法包括设置路由的 meta 属性,并在 HTML 模板中动态绑定类名。 ...
[详细]
蜡笔小新 2024-12-28 13:45:20
-
本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ...
[详细]
蜡笔小新 2024-12-28 13:42:43
-
-
QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ...
[详细]
蜡笔小新 2024-12-28 12:33:18
-
本文详细介绍了暂估入库的会计分录处理方法,包括账务处理的具体步骤和注意事项。 ...
[详细]
蜡笔小新 2024-12-28 12:26:30
-
本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ...
[详细]
蜡笔小新 2024-12-28 12:22:34
-
本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ...
[详细]
蜡笔小新 2024-12-28 12:07:46
-
本文详细介绍了极大似然估计(Maximum Likelihood Estimation, MLE)的推导过程,并通过3D可视化展示其在概率密度函数中的应用。我们将探讨如何利用MLE来估计参数,以及它在实际问题中的重要性。 ...
[详细]
蜡笔小新 2024-12-28 12:03:58
-
2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ...
[详细]
蜡笔小新 2024-12-28 11:58:48
-
本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ...
[详细]
蜡笔小新 2024-12-28 11:54:54
-
本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ...
[详细]
蜡笔小新 2024-12-28 11:52:00
-
探讨一个老旧 PHP MySQL 系统中,时间戳字段不定期出现异常值的问题及其可能原因。 ...
[详细]
蜡笔小新 2024-12-28 11:46:54
-
尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ...
[详细]
蜡笔小新 2024-12-28 11:12:44
-
本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ...
[详细]
蜡笔小新 2024-12-28 10:36:30
-
本文将详细解读郑州大学作为一所位于河南省的211和双一流B类高校,在全国211高校中的地位与排名,帮助高三学生更好地了解这所知名学府的实力与发展前景。 ...
[详细]
蜡笔小新 2024-12-28 10:08:34
-
本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ...
[详细]
蜡笔小新 2024-12-28 09:49:42
-