数组是一个数据结构,它将一个或多个相似类型的值存储在单个变量中。 例如,如果要存储100
个数字,不是定义100
个变量来分别这100
个值,而是定义100
个长度的数组变量来存储。
有三种不同类型的数组,每个数组元素的值使用数组的索引来访问。
- 数字数组 - 一个数字索引的数组。数值以线性方式存储和访问。
- 关联数组 - 一个以字符串作为索引的数组。这将元素值与关键值相关联,而不是严格的线性索引顺序。
- 多维数组 - 包含一个或多个数组可以使用多个索引进行访问
注 - 内置的数组函数在函数引用PHP数组函数中介绍讲解。
下面我们分别来学习这几种数组。
1. 数字数组
这些数组可以存储数字,字符串和任何对象,但其索引均由来数字表示。 默认情况下,数组索引从零开始。
示例
以下是一个显示如何创建和访问数字值数组的示例。这里使用了array()
函数来创建数组。 参考下以示例代码 -
<html>
<body>
<?php
/* First method to create array. */
$numbers = array( 1, 2, 3, 4, 5);
foreach( $numbers as $value ) {
echo "Value is $value <br />";
}
/* Second method to create array. */
$numbers[0] = "one";
$numbers[1] = "two";
$numbers[2] = "three";
$numbers[3] = "four";
$numbers[4] = "five";
foreach( $numbers as $value ) {
echo "Value is $value <br />";
}
?>
</body>
</html>
执行上面示例代码,它将输出以下结果 -
Value is 1
Value is 2
Value is 3
Value is 4
Value is 5
Value is one
Value is two
Value is three
Value is four
Value is five
2. 关联数组
关联数组在功能上与数值数组非常相似,但是它们在索引方面有所不同。关联数组使用字符串作为索引,以便您可以在键和值之间建立强关联。
要将员工的工资存储在一个数组中,使用数字索引数组不是好的做法。可以使用员工姓名作为关联数组中的键,值就是他们各自的工资。
注意 - 在打印时不要将关联数组保留在双引号内,否则不会返回任何值。
参考以下示例代码 -
<html>
<body>
<?php
/* First method to associate create array. */
$salaries = array("maxsu" => 12000, "hixiao" => 11000, "wong" => 1500);
echo "Salary of maxsu is ". $salaries['maxsu'] . "<br />";
echo "Salary of hixiao is ". $salaries['hixiao']. "<br />";
echo "Salary of wong is ". $salaries['wong']. "<br />";
/* Second method to create array. */
$salaries['maxsu'] = "high";
$salaries['hixiao'] = "medium";
$salaries['wong'] = "low";
echo "Salary of maxsu is ". $salaries['maxsu'] . "<br />";
echo "Salary of hixiao is ". $salaries['hixiao']. "<br />";
echo "Salary of wong is ". $salaries['wong']. "<br />";
?>
</body>
</html>
执行上面示例代码,得到以下结果 -
Salary of maxsu is 12000
Salary of hixiao is 11000
Salary of wong is 1500
Salary of maxsu is high
Salary of hixiao is medium
Salary of wong is low
3. 多维数组
多维数组中的每个元素也可以是一个多维数组。并且子数组中的每个元素都可以是一个数组等等。 使用多个索引来访问多维数组中的值。
示例
在这个例子中,我们创建了一个二维数组来存储三个学科的三个学生的分数。这个例子是一个关联数组,可以用同样的方式来创建数组。
参考下面示例代码 -
<html>
<body>
<?php
$marks = array(
"maxsu" => array (
"physics" => 35,
"maths" => 30,
"chemistry" => 39
),
"hixiao" => array (
"physics" => 30,
"maths" => 32,
"chemistry" => 29
),
"wong" => array (
"physics" => 31,
"maths" => 22,
"chemistry" => 39
)
);
/* Accessing multi-dimensional array values */
echo "Marks for maxsu in physics : " ;
echo $marks['maxsu']['physics'] . "<br />";
echo "Marks for hixiao in maths : ";
echo $marks['hixiao']['maths'] . "<br />";
echo "Marks for wong in chemistry : " ;
echo $marks['wong']['chemistry'] . "<br />";
?>
</body>
</html>
执行上面示例代码,得到以下输出结果 -
Marks for maxsu in physics : 35
Marks for hixiao in maths : 32
Marks for wong in chemistry : 39