[TOC]
数组是在程序设计中,为了处理方便, 把若干变量按有序的形 式组织起来的一种形式。这些按序排列的同类数据元素的集合 称为数组。
数组能够在单独的变量名中存储一个或多个值。
## 什么是数组?
>[success]数组是特殊的变量,它可以同时保存一个以上的值。
## 创建数组
在 PHP 中, array() 函数用于创建数组:
~~~
<?php
$arr = [];//方式1:直接定义一个空数组
$arr[0]="北京";//附值
$arr[0]="广州";//附值
$arr = array()//方式2:用array()
$arr = array("北京","广州");//创建并附值
?>
~~~
## 三种数组类型
### 索引数组 - 带有数字索引的数组
~~~
<?php
$$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
?>
~~~
### 关联数组 - 带有指定键的数组
~~~
<?php
$age["Peter"]="35";
$age["Ben"]="37";
$age["Joe"]="43";
?>
~~~
### 多维数组 - 包含一个或多个数组的数组
~~~
<?php
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
?>
~~~
## foreach 循环(数组循环)
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。
~~~
<?php
//方式1:循环值
foreach ($array as $value) {
code to be executed;
//每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。
}
//方式2:循环值与键(下标)
foreach ($array as $key => $value) {
code to be executed;
}
?>
~~~
## Array 函数
>[success] 数组函数允许您访问和操作数组。支持单维和多维数组。
<table class="dataintable">
<tbody>
<tr>
<th>
函数
</th>
<th>
描述
</th>
</tr>
<tr>
<td>
<a>
array()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>创建数组。
</td>
</tr>
<tr>
<td>
<a>
array_change_key_case()
</a>
</td>
<td>
把数组中所有键更改为小写或大写。
</td>
</tr>
<tr>
<td>
<a>
array_chunk()
</a>
</td>
<td>
把一个数组分割为新的数组块。
</td>
</tr>
<tr>
<td>
<a>
array_column()
</a>
</td>
<td>
返回输入数组中某个单一列的值。
</td>
</tr>
<tr>
<td>
<a>
array_combine()
</a>
</td>
<td>
通过合并两个数组来创建一个新数组。
</td>
</tr>
<tr>
<td>
<a>
array_count_values()
</a>
</td>
<td>
用于统计数组中所有值出现的次数。
</td>
</tr>
<tr>
<td>
<a>
array_diff()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>比较数组,返回差集(只比较键值)。
</td>
</tr>
<tr>
<td>
<a>
array_diff_assoc()
</a>
</td>
<td>
比较数组,返回差集(比较键名和键值)。
</td>
</tr>
<tr>
<td>
<a>
array_diff_key()
</a>
</td>
<td>
比较数组,返回差集(只比较键名)。
</td>
</tr>
<tr>
<td>
<a>
array_diff_uassoc()
</a>
</td>
<td>
比较数组,返回差集(比较键名和键值,使用用户自定义的键名比较函数)。
</td>
</tr>
<tr>
<td>
<a>
array_diff_ukey()
</a>
</td>
<td>
比较数组,返回差集(只比较键名,使用用户自定义的键名比较函数)。
</td>
</tr>
<tr>
<td>
<a>
array_fill()
</a>
</td>
<td>
用给定的键值填充数组。
</td>
</tr>
<tr>
<td>
<a>
array_fill_keys()
</a>
</td>
<td>
用指定键名的给定键值填充数组。
</td>
</tr>
<tr>
<td>
<a>
array_filter()
</a>
</td>
<td>
用回调函数过滤数组中的元素。
</td>
</tr>
<tr>
<td>
<a>
array_flip()
</a>
</td>
<td>
交换数组中的键和值。
</td>
</tr>
<tr>
<td>
<a>
array_intersect()
</a>
</td>
<td>
比较数组,返回交集(只比较键值)。
</td>
</tr>
<tr>
<td>
<a>
array_intersect_assoc()
</a>
</td>
<td>
比较数组,返回交集(比较键名和键值)。
</td>
</tr>
<tr>
<td>
<a>
array_intersect_key()
</a>
</td>
<td>
比较数组,返回交集(只比较键名)。
</td>
</tr>
<tr>
<td>
<a>
array_intersect_uassoc()
</a>
</td>
<td>
比较数组,返回交集(比较键名和键值,使用用户自定义的键名比较函数)。
</td>
</tr>
<tr>
<td>
<a>
array_intersect_ukey()
</a>
</td>
<td>
比较数组,返回交集(只比较键名,使用用户自定义的键名比较函数)。
</td>
</tr>
<tr>
<td>
<a>
array_key_exists()
</a>
</td>
<td>
检查指定的键名是否存在于数组中。
</td>
</tr>
<tr>
<td>
<a>
array_keys()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>返回数组中所有的键名。
</td>
</tr>
<tr>
<td>
<a>
array_map()
</a>
</td>
<td>
把数组中的每个值发送到用户自定义函数,返回新的值。
</td>
</tr>
<tr>
<td>
<a>
array_merge()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>把一个或多个数组合并为一个数组。
</td>
</tr>
<tr>
<td>
<a>
array_merge_recursive()
</a>
</td>
<td>
递归地合并一个或多个数组。
</td>
</tr>
<tr>
<td>
<a>
array_multisort()
</a>
</td>
<td>
对多个数组或多维数组进行排序。
</td>
</tr>
<tr>
<td>
<a>
array_pad()
</a>
</td>
<td>
用值将数组填补到指定长度。
</td>
</tr>
<tr>
<td>
<a>
array_pop()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>删除数组的最后一个元素(出栈)。
</td>
</tr>
<tr>
<td>
<a>
array_product()
</a>
</td>
<td>
计算数组中所有值的乘积。
</td>
</tr>
<tr>
<td>
<a>
array_push()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>将一个或多个元素插入数组的末尾(入栈)。
</td>
</tr>
<tr>
<td>
<a>
array_rand()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>返回数组中一个或多个随机的键。
</td>
</tr>
<tr>
<td>
<a>
array_reduce()
</a>
</td>
<td>
通过使用用户自定义函数,以字符串返回数组。
</td>
</tr>
<tr>
<td>
<a>
array_replace()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>使用后面数组的值替换第一个数组的值。
</td>
</tr>
<tr>
<td>
<a>
array_replace_recursive()
</a>
</td>
<td>
递归地使用后面数组的值替换第一个数组的值。
</td>
</tr>
<tr>
<td>
<a>
array_reverse()
</a>
</td>
<td>
以相反的顺序返回数组。
</td>
</tr>
<tr>
<td>
<a>
array_search()
</a>
</td>
<td>
搜索数组中给定的值并返回键名。
</td>
</tr>
<tr>
<td>
<a>
array_shift()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>删除数组中首个元素,并返回被删除元素的值。
</td>
</tr>
<tr>
<td>
<a>
array_slice()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>返回数组中被选定的部分。
</td>
</tr>
<tr>
<td>
<a>
array_splice()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>删除并替换数组中指定的元素。
</td>
</tr>
<tr>
<td>
<a>
array_sum()
</a>
</td>
<td>
返回数组中值的和。
</td>
</tr>
<tr>
<td>
<a>
array_udiff()
</a>
</td>
<td>
比较数组,返回差集(只比较值,使用一个用户自定义的键名比较函数)。
</td>
</tr>
<tr>
<td>
<a>
array_udiff_assoc()
</a>
</td>
<td>
比较数组,返回差集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。
</td>
</tr>
<tr>
<td>
<a>
array_udiff_uassoc()
</a>
</td>
<td>
比较数组,返回差集(比较键和值,使用两个用户自定义的键名比较函数)。
</td>
</tr>
<tr>
<td>
<a>
array_uintersect()
</a>
</td>
<td>
比较数组,返回交集(只比较值,使用一个用户自定义的键名比较函数)。
</td>
</tr>
<tr>
<td>
<a>
array_uintersect_assoc()
</a>
</td>
<td>
比较数组,返回交集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。
</td>
</tr>
<tr>
<td class="no_wrap">
<a>
array_uintersect_uassoc()
</a>
</td>
<td>
比较数组,返回交集(比较键和值,使用两个用户自定义的键名比较函数)。
</td>
</tr>
<tr>
<td>
<a>
array_unique()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>删除数组中的重复值。
</td>
</tr>
<tr>
<td>
<a>
array_unshift()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>在数组开头插入一个或多个元素。
</td>
</tr>
<tr>
<td>
<a>
<code class=" language-php">(注意)</code>array_values()
</a>
</td>
<td>
返回数组中所有的值。
</td>
</tr>
<tr>
<td>
<a>
array_walk()
</a>
</td>
<td>
对数组中的每个成员应用用户函数。
</td>
</tr>
<tr>
<td>
<a>
array_walk_recursive()
</a>
</td>
<td>
对数组中的每个成员递归地应用用户函数。
</td>
</tr>
<tr>
<td>
<a>
arsort()
</a>
</td>
<td>
<code class=" language-php">(注意)</code> 对关联数组按照键值进行降序排序。
</td>
</tr>
<tr>
<td>
<a>
asort()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>对关联数组按照键值进行升序排序。
</td>
</tr>
<tr>
<td>
<a>
compact()
</a>
</td>
<td>
创建包含变量名和它们的值的数组。
</td>
</tr>
<tr>
<td>
<a>
count()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>返回数组中元素的数目。
</td>
</tr>
<tr>
<td>
<a>
current()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>返回数组中的当前元素。
</td>
</tr>
<tr>
<td>
<a>
each()
</a>
</td>
<td>
返回数组中当前的键/值对。
</td>
</tr>
<tr>
<td>
<a>
end()
</a>
</td>
<td>
将数组的内部指针指向最后一个元素。
</td>
</tr>
<tr>
<td>
<a>
extract()
</a>
</td>
<td>
从数组中将变量导入到当前的符号表。
</td>
</tr>
<tr>
<td>
<a>
in_array()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>检查数组中是否存在指定的值。
</td>
</tr>
<tr>
<td>
<a>
key()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>从关联数组中取得键名。
</td>
</tr>
<tr>
<td>
<a>
krsort()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>对数组按照键名逆向排序。
</td>
</tr>
<tr>
<td>
<a>
ksort()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>对数组按照键名排序。
</td>
</tr>
<tr>
<td>
<a>
list()
</a>
</td>
<td>
把数组中的值赋给一些变量。
</td>
</tr>
<tr>
<td>
<a>
natcasesort()
</a>
</td>
<td>
用“自然排序”算法对数组进行不区分大小写字母的排序。
</td>
</tr>
<tr>
<td>
<a>
natsort()
</a>
</td>
<td>
用“自然排序”算法对数组排序。
</td>
</tr>
<tr>
<td>
<a>
next()
</a>
</td>
<td>
将数组中的内部指针向前移动一位。
</td>
</tr>
<tr>
<td>
<a>
pos()
</a>
</td>
<td>
current() 的别名。
</td>
</tr>
<tr>
<td>
<a>
prev()
</a>
</td>
<td>
将数组的内部指针倒回一位。
</td>
</tr>
<tr>
<td>
<a>
range()
</a>
</td>
<td>
创建包含指定范围单元的数组。
</td>
</tr>
<tr>
<td>
<a>
reset()
</a>
</td>
<td>
将数组的内部指针指向第一个元素。
</td>
</tr>
<tr>
<td>
<a>
rsort()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>对数组逆向排序。
</td>
</tr>
<tr>
<td>
<a>
shuffle()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>将数组打乱。
</td>
</tr>
<tr>
<td>
<a>
sizeof()
</a>
</td>
<td>
count() 的别名。
</td>
</tr>
<tr>
<td>
<a>
sort()
</a>
</td>
<td>
<code class=" language-php">(注意)</code>对数组排序。
</td>
</tr>
<tr>
<td>
<a>
uasort()
</a>
</td>
<td>
使用用户自定义的比较函数对数组中的键值进行排序。
</td>
</tr>
<tr>
<td>
<a>
uksort()
</a>
</td>
<td>
使用用户自定义的比较函数对数组中的键名进行排序。
</td>
</tr>
<tr>
<td>
<a>
usort()
</a>
</td>
<td>
使用用户自定义的比较函数对数组进行排序。
</td>
</tr>
</tbody>
</table>
>[danger] 练习:构建自己的一个方法,实现对数组的排序。
- 序言
- 第一章:准备工作
- 写在学习之前的话
- web应用开发结构
- 开发工具/环境
- 第二章:展现层面(HTML/CSS)
- HTML简介
- HTML基础
- HTML编码
- HTML链接
- HTML图像
- HTML列表
- HTML表单
- HTML表格(分水岭)
- HTML 实体
- HTML框架
- CSS层叠样式表
- CSS选择器
- CSS文本/字体
- CSS继承和叠加
- CSS框模型
- CSS浮动(分水岭)
- CSS定位
- CSS背景
- CSS图标字体
- CSS补充
- 开发技巧
- 第三章:展现层面(Javascript)
- JS简介
- JS实现
- JS输出交互
- JS变量
- JS数据类型
- JS运算符
- JS流程控制(分水岭)
- JS函数
- JS数组
- JS对象(分水岭)
- JS数组对象
- JS字符串对象
- JS数学对象
- JS日期对象
- JS BOM对象(分水岭)
- JS DOM对象
- JS事件对象
- JS元素对象
- JS DOM节点
- 第四章:展现层面(Jquery)
- JQ简介
- JQ使用
- JQ选择器
- JQ筛选
- JQ属性
- JQ-CSS
- JQ事件
- JQ文档处理
- JQ效果
- JQ-ajax
- 第五章:逻辑/业务层面(PHP)
- PHP简介
- PHP变量
- PHP数据类型
- PHP常量
- PHP运算符
- PHP流程控制
- PHP函数(分水岭)
- PHP日期
- PHP数学
- PHP数组
- PHP字符串
- PHP正则表达式(分水岭)
- PHP目录操作
- PHP文件
- PHP上传/下载
- PHP面向对象(分水岭)
- PHP图像处理
- PHP会话控制
- Ajax异步处理
- PHPMysql扩展
- PHPMysqli扩展
- PHPPdo扩展
- PHP接口
- PHP命名空间
- 第六章:逻辑/业务层面(框架设计)
- 第七章:存储层面(mysql)
- Mysql基础
- Mysql Sql简介
- Mysql数据库
- Mysql数据类型
- Mysql数据表
- Mysql操作记录
- Mysql查询
- Mysql修改表结构
- Mysql日期与时间
- Mysql分组统计
- Mysql多表查询
- Mysql安全
- Mysql存储引擎
- Mysql事务
- Mysql视图
- Mysql触发器
- Mysql存储过程
- Mysql存储函数
- Mysql优化
- 第八章:服务器(Linux)
- Linux介绍与安装
- Shell
- 目录与文件操作
- VIM编辑器使用
- 帐号管理
- SUDO
- 权限控制
- 压缩与打包
- 软件安装
- 计划任务
- 进程管理
- 宝塔Linux面板