php数组
数组是一种特殊的变量,可以在单个名称下保存多个值,您可以通过引用索引号或名称来访问这些值。
PHP数组类型
- 索引数组 :有数字索引的数组
- 关联数组 : 有命令键的数组
- 多维数组 : 包含一个或多个数组的数组
数组项
数组项可以是任何数据类型。
最常见的是字符串和数字(int, float),但数组项也可以是对象、函数或甚至是数组。
同一个数组中可以有不同的数据类型。
1 | $myArr = array("Volvo", 15, ["apples", "bananas"], myFunction); |
数组函数
php数组最强大的地方是处在于内置的数组函数,如count()函数用于计算数组的项数
1 | $cars = array("Volvo", "BMW", "Audi"); |
索引数组
php索引数组
在索引数组中,每个项目都有一个索引号
默认情况下,第一个项目的索引是0,第二个项目的索引是1,以此类推
1 | $cars = array("Volvo", "BMW", "Audi"); |
访问索引数组
要访问数组项目,可以引用索引号
1 | $cars = array("Volvo", "BMW", "Audi"); |
更改值
使用索引号
1 | $cars = array("Volvo", "BMW", "Audi"); |
遍历索引数组
要遍历并且打印数组的所有值,使用foreach循环
1 | $cars = array("Volvo", "BMW", "Audi"); |
索引号
索引数组的键是一个数字,默认情况下,第一个项目是 0,第二个是 1,依此类推,但也有例外。
新项目将获得下一个索引号,即比现有最高索引高一个。
因此,如果您有这样一个数组:
1 | $cars[0] = "Volvo"; |
如果您使用 array_push() 函数添加一个新项目,新项目将获得索引 3:
但是,如果您有一个具有随机索引号的数组,如下所示:
新项目的索引为15
1 | $cars[5] = "Volvo"; |
php关联数组
定义
分配命名键的数组
1 | $car = array("brand"=>"Ford", "model"=>"Mustang", "year"=>1964); |
访问关联数组
引用键名来访问
1 | $car = array("brand"=>"Ford", "model"=>"Mustang", "year"=>1964); |
更改值
也使用键名来更改
1 | $car = array("brand"=>"Ford", "model"=>"Mustang", "year"=>1964); |
遍历关联数组
用foreach循环
1 | $car = array("brand"=>"Ford", "model"=>"Mustang", "year"=>1964); |
php创建数组
创建数组
使用array()函数来创建
1 | $cars = array("Volvo", "BMW", "Audi"); |
也可以使用[] 更简洁
1 | $cars = ["Volvo", "BMW", "Audi"]; |
数组键
在创建索引数组时,键会自动给出,从 0 开始,每个项目增加 1,因此上面的数组也可以使用键来创建
1 | $cars = [ |
如下所示,索引数组与关联数组相同,但关联数组使用名称而不是数字:
1 | $myCar = [ |
创建空数组
可以先声明一个空数组,稍后再往后添加项目
1 | $cars = []; |
对于关联数组也是如此,您可以先声明数组,然后再向其添加项目:
1 | $myCar = []; |
一些说明补充
换行符并不重要,声明数组可以跨越多行
1 | $cars = [ |
最后一个项目的逗号是允许的
1 | $cars = [ |
数组见可以混合出现,可以创建同时具有索引和命名键的数组
1 | $myArr = []; |
php访问数组
访问数组项
要访问数组项,对于索引数组,您可以引用索引号;对于关联数组,可以引用键名
1 | $cars = array("Volvo", "BMW", "Audi"); |
注意:第一个索引是0 关联数组使用键名
双引号和单引号
在访问数组时都可以
1 | echo $cars["model"]; |
执行函数项
数组项可以是任何数据类型,包括函数。
要执行这样的函数,请使用索引号后跟括号 ()
:
1 | function myFunction() { |
关联函数执行函数使用键名
1 | function myFunction() { |
php更新数组项
更新数组项目
要更新现有的数组项,对于索引数组,您可以引用索引号;对于关联数组,您可以引用键名。
将第二个数组项从 “BMW” 更改为 “Ford”:
1 | $cars = array("Volvo", "BMW", "Audi"); |
foreach循环更新数组项
在 foreach
循环中更改项值时,有不同的技术可以使用。
一种方法是在赋值中插入 &
字符,按引用分配项值,从而确保在循环内部对数组项所做的任何更改都将应用于原始数组:
1 | $cars = array("Volvo", "BMW", "Audi"); |
**注意:**记得在循环后添加 unset()
函数。
如果没有 unset($x)
函数,$x
变量将保持对最后一个数组项的引用。
为了演示这一点,请查看在 foreach
循环后更改 $x
的值时会发生什么:
1 | $cars = array("Volvo", "BMW", "Audi"); |
php添加数组项
添加数组项
要向现有数组中添加项,您可以使用括号 []
语法。
1 | $fruits = array("Apple", "Banana", "Cherry"); |
向关联数组添加请使用括号 []
指定键,并使用 =
运算符分配值。
1 | $cars = array("brand" => "Ford", "model" => "Mustang"); |
添加多个项
要向现有数组添加多个项,使用array_push()函数
1 | $fruits = array("Apple", "Banana", "Cherry"); |
向关联数组添加多个项
要向现有数组中添加多个项,您可以使用 +=
运算符。
1 | $cars = array("brand" => "BYD", "model" => "Mustang"); |
php删除数组项
删除数组项
要从数组中删除现有项,您可以使用 array_splice()
函数。
使用 array_splice()
函数时,您需要指定索引(从哪里开始)以及要删除的项目数量。
1 | $cars = array("Volvo", "BMW", "Audi"); |
注:删除后数组会自动重新索引,从0开始
使用unset函数
您还可以使用 unset()
函数来删除现有的数组项。
注意:unset()
函数不会重新排列索引,这意味着在删除后,数组将不再包含缺失的索引。
1 | $cars = array("Volvo", "BMW", "Audi"); |
删除多个数组项
如需删除多个项目,array_splice()
函数有一个 length 参数,允许您指定要删除的项目数量。
1 | $cars = array("Volvo", "BMW", "Audi"); |
unset()
函数接受无限数量的参数,因此可用于删除多个数组项:
1 | $cars = array("Volvo", "BMW", "Audi"); |
删除关联数组里的项,也可以使用unset()函数
指定要删除项的键
1 | $cars = array("brand" => "Ford", "model" => "Mustang", "year" => 1964); |
使用array_diff函数
也可以用来删除关联数组里的项
1 | $cars = array("brand" => "Ford", "model" => "Mustang", "year" => 1964); |
注:array_diff函数()将值作为参数而不是键
其他
**array_pop()**函数删除最后一个
array_shift函数删除第一个项
1 | $cars = array("Volvo", "BMW", "Audi"); |
php数组排序
升序排序
sort()函数 asort()函数 ksot()函数
1 | $cars = array("Volvo", "BMW", "Audi"); |
降序排列
rsort()函数 arsort()函数 krsort()函数
1 | $cars = array("Volvo", "BMW", "Audi"); |
php多维数组
多维数组
多维数组是一个包含一个或多个数组的数组。
PHP 支持深度为二、三、四、五或更多层的多维数组。然而,对于大多数人来说,深度超过三层的数组很难管理。
数组的维度表示选择元素所需的索引数量。
- 对于二维数组,您需要两个索引来选择元素
- 对于三维数组,您需要三个索引来选择元素
二维数组
二维数组是数组的数组(三维数组是数组的数组的数组)。
请看以下表格
名称 | 库存 | 已售 |
---|---|---|
Volvo | 22 | 18 |
BMW | 15 | 13 |
Ford | 5 | 2 |
Land Rover | 17 | 15 |
1 | $cars = array ( |
现在二维的 $cars 数组包含四个数组,并且它有两个索引:行和列。
要访问 $cars 数组的元素,我们必须指向两个索引(行和列):
1 | echo $cars[0][0].": 库存:".$cars[0][1].", 已售:".$cars[0][2].".<br>"; |
我们还可以在另一个 for 循环内部放置一个 for 循环来获取 $cars 数组的元素(我们仍然需要指向两个索引):
1 | for ($row = 0; $row < 4; $row++) { |
php数组函数
PHP 提供了一组内置函数,可用于操作数组。
[详情请看](PHP 数组函数)