PHP 初始化数组

本文最后更新于:2024年3月18日 凌晨

PHP 初始化数组

  • 在PHP中有两种数组:索引数组和关联数组,索引(indexed)数组的键名(key)是整数并且从0开始,当你需要通过位置识别元素时可使用索引数组,关联(associative)数组的键名是字符串,看起来像有两个列的数据表,第一列是用与访问键值的键名,第二列是键值(value)
  • PHP内部将所有的数组都存储为关联数组,所以关联数组和索引数组的唯一区别在于键(key)是什么,一些数组功能主要用于使用索引数组,因为它们假设你有或者需要从0开始连续的整数作为键,在两种情况下,键都是唯一的,换句话说,不管键是字符串还是整数,都不能为两个元素使用相同的键。
  • PHP数组的元素有一个人不依赖于键和值的内部顺序,这个顺序一般就是把值放入到数组的顺序,很多用于遍历数组的函数都是基于这个内部顺序,但是稍后介绍的各种排序函数可以让你基于键,值或其他来改变数组中元素的顺序。

创建数组

  • 如果数组不存在,那么新数组存放值将创建该数组,但是在一个未定义的数组中检索值不会创建数组,例如:
1
2
3
4
5
// 在此之前$addresses没有定义。
echo $addresses[0]; // 无输出。
echo $addresses; // 无输出。
$addresses[0] = 'spam@cyberpromo.net';
echo $addresses; // 输出"Array"
  • 下面的代码用简单的赋值来初始化程序中的一个数组:
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);
  • 要创建一个空数组,则不传递参数给array():
1
$addresses = array();
  • 可以用=>来指定一个初始索引,并在后面跟着一系列键值,键值从初始键开始插入到数组中,后面的元素索引是连续的:
1
$days = array(1 => 'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');	// 数组中2号元素是Tuesday,3号是Wednesday,等等。
  • 如果初始索引是一个非数字的字符串,那么后面的索引是从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
$value = $multi[2][0];// 第2行,第0列,$value=7
  • 可使用变量替换来访问多维数组中的元素,必须将整个元素用大括号括起来:
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'; //$family[2]为'Pebbles'
  • 这个语言结构假设该数组的索引是数字,并且把元素分配给下一个可用的数字索引,数字从0开始,试图添加值到一个关联数组是程序员常犯的错误,但是PHP会给新的元素指定数字索引而不发出警告:
1
2
$person = array('name' => 'Fred');
$person[] = 'Wilma'; //$person[0]现在是'Wilma'

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!