PHP数组的详细解读
数组的定义
数组的本质是管理和操作一组变量,数组中可以存储任意长度的数据,也可以存储任意类型的数据。数组中的单元称为元素,每个元素包括下标(键)和值,访问元素的时候,是通过下标来访问,包括一维数组,二维数组及多维数组(即数组的嵌套),PHP中分为索引数组和关联素组。
(1) 索引数组 :使用整数作为索引,如$arr=array('PHP课程','HTML课程','CSS课程');
(2) 关联数组 :使用字符串作为索引,如$arr=array('ID'=>1,'name'=>'PHP课程','class=>'PHP100');
PHP数组的声明和使用
1. 直接为数组元素赋值声明
如果索引下标不给出,就会从0开始顺序索引;如果给出索引下标,下一个就会从最大的下标开始增1;如果后面出现前面的下标,则会为前面的元素重新赋值;混合声明时,索引数组和关联数组不互相影响。
例如:
$array[0]="I";
$array[1]="love";
$array[2]="PHP";
print_r($array);
其中,print_r()是一个特殊的函数,允许你查看PHP数组变量里面的值,会按照一定键值和元素的顺序显示出该数组中的所有元素。这对于程序的调试很有帮助。
2.使用array()函数声明
默认是索引数组,如果为关联数组,需要为数组指定下标,使用“键=>值”,多个成员之间使用" , "分割。
例如:
$fruits = array('red' => 'apple', 'yellow' => 'banana', 'purple' => 'plum', 'green' => 'grape');
print_r($fruits);
PHP数组的遍历
我们经常要对数组进行遍历,PHP中遍历数组的方法有多种,可以使用for()循环遍历数组,在这里,经常会用到sizeof()函数,该函数 是常用的数组函数之一,返回数组的大小,即读取数组内元素的个数,作为循环计数器的上限值。还可以使用list()函数遍历数组,它只能用于数字索引的数 组,且数字索引从0开始。
PHP中还可以使用专门用于对数组循环目的函数:foreach()。foreach()对传递给它的数组中的每一个元素执行一次,它不需要计数器或调用函数sizeof(),它可以自动跟踪数组在数组中的位置,同时需要更少的维护。foreach()有两种语法结构:
(1)foreach (array_expression as $value)
(2)foreach (array_expression as $key => $value)
第一种结构会遍历给定的array_expression 数组,每次循环中,当前单元的值被赋给$value 并且数组内部的指针向前移一步。第二种结构中,当前单元的键名也会在每次循环中被赋给$key。
foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。例如:
foreach ($arr as $value) {
echo "Value: $value ";
}
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value ";
}
PHP数组的排序
对数组元素进行排序,我们在做项目时使用也比较多,涉及的相关函数也有很多,比 如 sort(),rsort(),usort(),ksort(),uasort(),uksort() 等等,这里先介绍几个。使用sort()和 rsort()分别对数组进行升序和降序,例如:
$arr=array(23,4,65,11,64,8);
sort($arr);
print_r($arr);
运行结果:
Array ( [0] => 4 [1] => 8 [2] => 11 [3] => 23 [4] => 64 [5] => 65 )
另外,我们可以注意到通过sort函数排序之后,数组原有的索引键名会被重新分配。rsort()会对数组进行逆向排序。
如果使用了关联数组,在排序后还要保持关键字和值的排序一致,这就需要使用ksort()和asort()函数,例如:
$array=array('php'=>1,'jsp'=>2,'asp'=>3);
ksort($array);
print_r($array);
运行结果:
Array ( [asp] => 3 [jsp] => 2 [php] => 1 )
希望以上内容可以帮助你更好地理解和使用PHP数组。
- 本文来自:Linux学习教程网
PHP数组的详细解读的更多相关文章
- MemCache超详细解读
MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...
- MemCache超详细解读 图
http://www.cnblogs.com/xrq730/p/4948707.html MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于 ...
- MemCache详细解读
MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...
- VINS-mono详细解读
VINS-mono详细解读 极品巧克力 前言 Vins-mono是香港科技大学开源的一个VIO算法,https://github.com/HKUST-Aerial-Robotics/VINS-Mono ...
- rpm软件包管理的详细解读
CentOS系统上使用rpm命令管理程序包:安装.卸载.升级.查询.校验.数据库维护 1.基本安装 rpm -ivh PackageFile 2.rpm选项 rpm -ivh --test Packa ...
- Android BLE蓝牙详细解读
代码地址如下:http://www.demodashi.com/demo/15062.html 随着物联网时代的到来,越来越多的智能硬件设备开始流行起来,比如智能手环.心率检测仪.以及各式各样的智能家 ...
- 为你详细解读HTTP请求头的具体含意
当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗?下面一条条的为你详细解读,先看 ...
- 详细解读Volley(三)—— ImageLoader & NetworkImageView
ImageLoader是一个加载网络图片的封装类,其内部还是由ImageRequest来实现的.但因为源码中没有提供磁盘缓存的设置,所以咱们还需要去源码中进行修改,让我们可以更加自如的设定是否进行磁盘 ...
- 【Python】【Web.py】详细解读Python的web.py框架下的application.py模块
详细解读Python的web.py框架下的application.py模块 这篇文章主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码, ...
随机推荐
- 深入理解java虚拟机-第12章Java内存模型与线程
第12章 Java内存模型与线程 Java内存模型 主内存与工作内存: java内存模型规定了所有的变量都在主内存中,每条线程还有自己的工作内存. 工作内存中保存了该线程使用的主内存副本拷贝,线程对 ...
- [转]Socket编程中,阻塞与非阻塞的区别
阻塞:一般的I/O操作可以在新建的流中运用.在服务器回应前它等待客户端发送一个空白的行.当会话结束时,服务器关闭流和客户端socket.如果在队列中没有请示将会出现什么情况呢?那个方法将会等待一个的到 ...
- C++常量const
常量折叠概念 常量折叠表面上的效果和宏替换是一样的,只是“效果上是一样的”,而两者真正的区别在于,宏是字符常量,在预编译宏替换完成后,该宏名字会消失,所有对宏的引用已经全部被替换为它所对应的值,编译器 ...
- matlab中freqz的用法以及多项式的展开
对于一个变量a,matlab中定义需要这样 syms a: 定义之后就可以写由变量组成的式子,比如 c=(1+a^-1)^5; 可以用expand(c) 就能把c展开成多项式,每一项的系数就可以看到. ...
- Spring IOC容器的初始化-(三)BeanDefinition的注册
---恢复内容开始--- 前言 在上一篇中有一处代码是BeanDefiniton注册的入口,我们回顾一下. 1.BeanDefiniton在IOC容器注册 首先我们回顾两点,1. 发起注册的地方:2. ...
- fn project 生产环境使用
此为官方的参考说明 Running Fn in Production The QuickStart guide is intended to quickly get started and kic ...
- 在C#获取麦克风输入的声音的波形图
怎么获取声音波动的频率,在网上找来一些这方面的资料: DirectX的 DirectSound http://zhidao.baidu.com/question/448587955.html http ...
- ncdu 查找linux下最占空间的文件(交互式查询)
安装 wget -c https://dev.yorhel.nl/download/ncdu-1.11.tar.gz tar xzvf ncdu-1.11.tar.gz cd ncdu-1.11 ./ ...
- Oracle 13c OEM 安装手册
1 安装准备工作 以下包已Redhat 为准,其他版的操作系统以官方手册为准. 1.1 Oracle Management Service 依赖如下包 glibc-comm ...
- mysql 统计sql
1.按照月份统计数据 SELECT DATE_FORMAT(d.create_time,'%Y-%m') months,COUNT(id) AS scannum FROM detail d GROUP ...