PHP数组
PHP数组的遍历
在PHP中,不仅可以指定非连续的数字索引值,而且还存在以字符串为下表的关联数组。所以在php中很少使用for语句循环来遍历数组。使用for语句遍历连续数字索引的一维数组。count()函数获取数组的长度。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?phpheader("Content-type:text/html;charset=utf-8");//使用array()语句将联系人列表中第一条记录声明称一维数组$contact$contact = array( array(1,"高某","A公司","北京市","(010)98765432","gao@qq.com"), array(2,"洛某","B公司","上海市","(021)12345678","lm@qq.com"), array(3,"峰某","C公司","天津市","(022)24680246","fm@qq.com"), array(4,"高某","D公司","重庆市","(010)13579135","gm@qq.com"));//以表格形式输出一维数组echo '<table border="1" width="600" align="center" ';echo '<caption><h1>联系人列表</h1></caption>';echo '<tr bgcolor="#ddd">';//以html的th标记输出表格的字段名称echo '<th>编号</th><th>姓名</th><th>公司</th><th>地址</th><th>电话</th><th>Email</th>';echo '</tr><tr>';//使用for循环输出一组数组中的元素for($row=0; $row<count($contact); $row++){ echo "<tr>"; for($col=0;$col<count($contact[$row]);$col++){ echo '<td>'.$contact[$row][$col]."</td>"; } echo "</tr>";}echo '</tr></table>'; |
使用foreach语句遍历数组
使用foreach语句遍历数组时与数组的下标无关,不管是否是否连续的数字索引数组,还是以字符串为下标的关联数组,都可以使用foreach语句遍历。自php5起,foreach还可以遍历对象。当试图将其用于其他数据类型或者一个未初始化的变量时会产生错误。有两种语法:
|
1
2
3
|
foreach(array as $value){ ……} |
|
1
2
3
|
foreach(array as $key => $value){ ……} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<?phpheader("Content-type:text/html;charset=utf-8");//使用array()语句将联系人列表中第一条记录声明称一维数组$contact$contact = array( "市场部"=>array( array(1,"高某","市场部经理",5000.00), array(2,"洛某","职员",4000.00), array(3,"峰某","职员",3400.00), ), "产品部"=>array( array(1,"李某","市场部经理",6000.00), array(2,"周某","职员",4000.00), array(3,"吴某","职员",3200.00), ), "市场部"=>array( array(1,"郑某","市场部经理",5000.00), array(2,"王某","职员",4000.00), array(3,"冯某","职员",3400.00), ),);$num = 0;//使用三层foreach语句遍历三维数组,输出三个表格foreach($contact as $sector=>$table){ echo '<table border="1" width="600" align="center"'; echo '<caption><h2>'.$sector.'</h2></caption>'; echo '<tr bgcolor="#ddd"> <th>编号</th><th>姓名</th><th>职务</th> <th>工资</th> </tr>'; foreach($table as $row){ echo '<tr>'; foreach($row as $col){ echo '<td>'.$col.'</td>'; } echo '<tr/>'; } echo '</table><br/>';} |
联合使用list()、each()和while循环遍历数组
each()
each()函数需要传递一个数组作为参数,返回数组中当前元素的键/值对,并向后移动数组指针到下一个元素的位置。键/值对被返回为带有4个元素的关联和索引混合的数组,键名分别为0,1,key和value。其中键名0和key对应的值是一样的,是数组元素的键名,1和value则包含有数组元素的值。如果内部指针越过了数组的末端,则each()返回false。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?phpheader("Content-type:text/html;charset=utf-8");$contact = array("ID"=>1,"姓名"=>"高某","公司"=>"公司名","地址"=>"北京市");$id = each($contact);print_r($id); //Array ( [1] => 1 [value] => 1 [0] => ID [key] => ID )echo '<br/>';$name = each($contact);print_r($name); //Array ( [1] => 高某 [value] => 高某 [0] => 姓名 [key] => 姓名 )echo '<br/>';$name = each($contact);print_r($name); //Array ( [1] => 公司名 [value] => 公司名 [0] => 公司 [key] => 公司 )echo '<br/>';$address = each($contact);print_r($address); //Array ( [1] => 北京市 [value] => 北京市 [0] => 地址 [key] => 地址 )echo '<br/>';$no = each($contact);print_r($no); |
list()
list()用一部操作给一组变量进行赋值,即把数组中的值赋给一些变量,list()技能用于数字索引的数组并假定数字索引从0开始。
list()语句和其他函数在使用上有很大的区别,并不是直接接受一个数组作为参数。而是通过"="运算符以赋值的方式,将数组中每个元素的值,对应的赋给list()函数中的每个参数。list()函数又将它中的每个参数转换为直接可以在脚本中使用的变量。
|
1
2
3
4
5
6
|
<?phpheader("Content-type:text/html;charset=utf-8");$info = array('coffee','brown','caffeine');list($drink,$color,$power) = $info;echo "$drink is $color and $power makes it special.\n"; |
while循环遍历数组
|
1
2
3
|
while(list($key,$value)=each(array)){ ……} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?phpheader("Content-type:text/html;charset=utf-8");$contact = array( 'id'=>1, "姓名"=>"高某", "公司"=>"a公司", "地址"=>"北京市", "电话"=>"(010)98765432", "Email"=>"gao@qqcom");echo "<dl>一个联系人信息:</dl>";while(list($key,$value) = each($contact)){ echo "<dd>$key:$value</dd>";}echo "</dl>"; |
使用数组的内部指针控制函数遍历数组
数组的内部指针是数组内部的组织机制,指向一个数组中的某个元素。弄人是指向数组中第一个元素,通过移动或改变指针的位置,可以访问数组中的任意元素。对于数组指针的控制PHP提供了以下几个内建函数可以利用。
current():取得目前指针位置的内容资料。
key():读取当前指针所指向资料的索引值。
next():将数组中的内部指针移动到下一个单元。
prev():将数组的内部指针倒回一位。
end():将数组的内部指针指向最后一个元素。
reset():将目前指针无条件一直第一个索引位置。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<?phpheader("Content-type:text/html;charset=utf-8");$contact = array( 'id'=>1, "姓名"=>"高某", "公司"=>"a公司", "地址"=>"北京市", "电话"=>"(010)98765432", "Email"=>"gao@qqcom");//数组刚声明时,数组指针在数组中第一元素位置//使用key()和current()函数传入数组$contact,返回数组中当前元素的键和值echo '第一个元素'.$key($contact).'=>'.current($contact).'<br/>'; //第一个元素echo '第一个元素'.$key($contact).'=>'.current($contact).'<br/>'; //数组指针没动next($contact);next($contact);echo '第三个元素:'.key($contact).'=>'.current($contact).'<br/>';end($contact);echo '最后一个元素'.key($contact).'=>'.current($contact).'<br/>';prev($contact);echo '最后第二个元素:'.key($contact).'=>'.current($contact).'<br/>';reset($contact);echo '又回到了第一个元素:'.key($contact).'=>'.current($contact).'<br/>'; |
PHP超全局变量数组

数组相关处理函数
数组的键/值操作函数
array_values()函数的作用是返回数组中所有元素的值。只有一个必选参数——给定的数组,返回一个包含给定数组中所有值的数组,但不保留键名,被返回的数组将使用顺序的数值键重新建立索引,从0开始且以1递增。适合用于数组中元素下表混乱的数组,或者可以将关联数组转化为索引数组。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php header("Content-type:text/html;charset=utf-8"); $contact = array( 'id'=>1, "姓名"=>"高某", "公司"=>"a公司", "地址"=>"北京市", "电话"=>"(010)98765432", "Email"=>"gao@qqcom");print_r(array_values($contact)); //Array ( [0] => 1 [1] => 高某 [2] => a公司 [3] => 北京市 [4] => (010)98765432 [5] => gao@qqcom ) |
函数array_keys()
array_keys()函数的作用是返回数组中所有的键名。本函数中有一个必须参数和两个可选参数。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?phpheader("Content-type:text/html;charset=utf-8");$contact = array( 'id'=>1, "姓名"=>"高某", "公司"=>"a公司", "地址"=>"北京市", "电话"=>"(010)98765432", "Email"=>"gao@qqcom");print_r(array_keys($contact)); //Array ( [0] => id [1] => 姓名 [2] => 公司 [3] => 地址 [4] => 电话 [5] => Email ) echo "<br/>";print_r(array_keys($contact,"北京市")); //使用第二个可选参数输出 |
函数in_array()
in_array()函数的作用是检查数组中是否存在某个值,即在数组中搜索给定的值。本函数有三个参数,前两个是必需的,最后一个为可选参数。
第一个参数未规定要在数组中搜索的值,第二个参数是规定要被搜索的数组。第三个参数设置为true时,函数只有在元素存在于数组中且数据类型与给定值相同时才返回true。
|
1
2
3
4
5
6
7
8
9
|
<?phpheader("Content-type:text/html;charset=utf-8");$os = array("Mac","NT","Trix","Linux");if(in_array("Mac",$os,true ) ){ echo "Got Trix";} |
array_search()函数进行检索。该函数与in_array()的参数相同,搜索给定的值,存在则返回相应的键名,也支持对数据类型的严格判断。
array_key_exists()函数还可以检查给定的键名或索引是否存在与数组中。因为在一个数组中键名是唯一的,所以不需要对其数据类型进行判断。isset()函数完成对数组中的键名或索引进行检查,但isset()对于数组中为null的值不会返回true,而array_key_exists()会。
函数array_filp()
array_filp()的作用是交换数组中的键和值。返回一个反转后的数组,如果同一个值出现了多次,则最后一个键名将作为它的值,覆盖前面出现的元素。如果原数组中的值的数据类型不是字符串或整数,函数将报错。
函数array_reverse()
array_reverse()作用是将原数组中的元素顺序翻转,创建新的数组并返回。
第一个参数是必选项,接受一个数组作为输入。第二个参数是可选项,如果指定为true,则元素的键名保持不变,否则键名将丢失。
统计数组元素的个数和唯一性
count()计算数组中的元素数目或对象中的属性个数。对于数组,返回其元素的个数,对于其他值则返回1。如果参数是变量而变量没有定义或是变量包含一个空的数组,该函数返回0。
函数array_count_values()
array_count_values()函数用于统计数组中所有值出现的次数。该函数只有一个参数。
|
1
2
3
4
5
6
7
|
<?phpheader("Content-type:text/html;charset=utf-8");$array = array(1,"php",1,"mysql","php");$newArray = array_count_values($array);print_r($newArray); //Array ( [1] => 2 [php] => 2 [mysql] => 1 ) |
函数array_unique()
参数需要接受一个数组,当数组中几个元素的值相等时只保留第一个元素,其他的元素被删除,并且返回一个新数组中键名不变。array_unique()先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。
使用回掉函数处理数组的函数
PHP数组的更多相关文章
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...
- 了解PHP中的Array数组和foreach
1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组 . 2.例子:一般的数组 这里,我 ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
- JavaScript常见的五种数组去重的方式
▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...
- js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的
题目: 给Array对象原型上添加一个sameStructureAs方法,该方法接收一个任意类型的参数,要求返回当前数组与传入参数数组(假定是)相对应下标的元素类型是否一致. 假设已经写好了Array ...
- javascript数组查重方法总结
文章参考地址:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277 题目 对下列数组去重: var arr = ['aa', ...
- 掌握javascript中的最基础数据结构-----数组
这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...
- 小兔JS教程(四)-- 彻底攻略JS数组
在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...
随机推荐
- Java中图片压缩处理
原文http://cuisuqiang.iteye.com/blog/2045855 整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享. 首先,要压缩的图片格式不能说动态图片,你 ...
- linux(64位的系统)下nasm进行汇编链接时出现的问题
出现问题: $nasm -f elf hello.asm -o hello.o $ld -s hello.o -o hello ld: i386 architecture of input file ...
- MongoDb 创建、更新以及删除文档常用命令
mongodb由C++写就,其名字来自humongous这个单词的中间部分,从名字可见其野心所在就是海量数据的处理.关于它的一个最简洁描述为:scalable, high-performance, o ...
- WPF RichTextbox
WPFTextBoxAutoComplete AvalonEdit WPF SyntaxHighlightBox WinForm 下的 Fast Colored TextBox for Synta ...
- 敏捷BI比传统BI功能强大是否属实?
关于大数据的资讯铺天盖地而来,让人眼花缭乱.虽然资讯很精彩,我们也看到了大数据背后的价值,很多企业选择了商业智能BI产品.商业智能在使用上可分为敏捷BI与传统BI,从名字来看敏捷BI要比传统BI显得利 ...
- python Requests模块的简要介绍
Requests的安装: pip install Requests Requests的使用: import requests url = "http://www.mzitu.com" ...
- 脑成像数据分析:Python工具包
来源:SealHuang 脑成像技术已经成为认知科学和心理学研究领域中一种重要的研究手段,帮助研究者不断深入发掘我们脑中的秘密.伴随着研究的不断深入,各式各样的指标参数和分析方法也不断推陈出新,以迅雷 ...
- c# 调用c++DLL方法及注意事项
引用命名空间 using System.Runtime.InteropServices 调用方法: 一.静态加载 用DllImprot方式来加载c++DLL.如下格式: //对应c++方法 //voi ...
- 使用gulp工具生成svgsprites
简介 SVG即可缩放矢量图形 (Scalable Vector Graphics)的简称, 是一种用来描述二维矢量图形的XML标记语言. SVG图形不依赖于分辨率, 因此图形不会因为放大而显示出明显的 ...
- ExtJS4随笔(1) -- 在VS中加入Ext4的智能提示
将辅助文件加入到Web工程内即可. 辅助文件