PHP 初始化数组
本文最后更新于:2024年3月18日 凌晨
PHP 初始化数组
- 在PHP中有两种数组:索引数组和关联数组,索引(indexed)数组的键名(key)是整数并且从0开始,当你需要通过位置识别元素时可使用索引数组,关联(associative)数组的键名是字符串,看起来像有两个列的数据表,第一列是用与访问键值的键名,第二列是键值(value)
- PHP内部将所有的数组都存储为关联数组,所以关联数组和索引数组的唯一区别在于键(key)是什么,一些数组功能主要用于使用索引数组,因为它们假设你有或者需要从0开始连续的整数作为键,在两种情况下,键都是唯一的,换句话说,不管键是字符串还是整数,都不能为两个元素使用相同的键。
- PHP数组的元素有一个人不依赖于键和值的内部顺序,这个顺序一般就是把值放入到数组的顺序,很多用于遍历数组的函数都是基于这个内部顺序,但是稍后介绍的各种排序函数可以让你基于键,值或其他来改变数组中元素的顺序。
创建数组
- 如果数组不存在,那么新数组存放值将创建该数组,但是在一个未定义的数组中检索值不会创建数组,例如:
1 2 3 4 5
| echo $addresses[0]; echo $addresses; $addresses[0] = 'spam@cyberpromo.net'; echo $addresses;
|
1 2 3 4
| $addresses[0] = 'spam@cyberpromo.net'; $addresses[0] = 'abuse@example.com'; $addresses[0] = 'root@example.com';
|
- 上面的代码使用是一个索引数组,其索引是从0开始的整数索引,下面是关联数组:
1
| $addresses = array('spam@cyberpromo.net','abuse@example.com','root@example.com');
|
- 要用
array()
创建一个关联数组,可使用=>符号来分隔索引和值:
1 2 3
| $price = array('Gasket' => 15.29, 'Wheel' => 75,25, 'Tire' => 50.00);
|
- 注意使用空白符和对齐,虽然我们也可以把代码都挤在一起,但是那样不易阅读:
1
| $price = array('Gasket' => 15.29,'Wheel' => 75,25,'Tire' => 50.00);
|
- 可以用=>来指定一个初始索引,并在后面跟着一系列键值,键值从初始键开始插入到数组中,后面的元素索引是连续的:
1
| $days = array(1 => 'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
|
- 如果初始索引是一个非数字的字符串,那么后面的索引是从0开始的整数,因此,下面的代码可能是一个错误:
1 2 3
| $whoops = array('Firday' => 'Black','Brown','Green');
$whoops = array('Firday' => 'Black',0 => 'Brown',1 => 'Green');
|
- $whoops[0]本该为’Black’,但却指向了’Brown’
多维数组
- 数组中的值也可以是数组,这使你可以轻松地创建多维数组:
1 2 3 4
| $row_0 = array(1,2,3); $row_0 = array(4,5,6); $row_0 = array(7,8,0); $multi = array($row_0,$row_1,$row_2);
|
- 可使用变量替换来访问多维数组中的元素,必须将整个元素用大括号括起来:
1
| echo("The value at row 2, column 0 is {$multi[2][0]}\n");
|
1
| The value at row 2,column 0 is Array[0]
|
在数组末尾添加值
- 要把更多的值插入到一个已存在的索引数组末尾,使用
[]
语法:
1 2
| $family = array('Fred','Wilma'); $family[] = 'Pebbles';
|
- 这个语言结构假设该数组的索引是数字,并且把元素分配给下一个可用的数字索引,数字从0开始,试图添加值到一个关联数组是程序员常犯的错误,但是PHP会给新的元素指定数字索引而不发出警告:
1 2
| $person = array('name' => 'Fred'); $person[] = 'Wilma';
|