数组是什么?
数组是一个能在单个变量中存储多个值的特殊变量。
如果您有一个项目清单(例如:车名字的清单),将其存储到单个变量中,如下所示:
$cars1="Volvo";
$cars2="BMW";
$cars3="Toyota";
然而,如果您想要遍历数组并找出特定的一个呢?如果数组的项不只 3 个而是 300 个呢?
解决办法是创建一个数组!
数组可以在单个变量中存储多个值,并且您可以根据键访问其中的值。
在 PHP 中创建数组
在 PHP 中,array() 函数用于创建数组:
array();
在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
多维数组 - 包含一个或多个数组的数组
PHP 数值数组
这里有两种创建数值数组的方法:
自动分配 ID 键(ID 键总是从 0 开始):
$cars=array("Volvo","BMW","Toyota");
人工分配 ID 键:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";
下面的实例创建一个名为 $cars 的数值数组,并给数组分配三个元素,然后打印一段包含数组值的文本:
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
获取数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素的数量):
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>
遍历数值数组
遍历并打印数值数组中的所有值,您可以使用 for 循环,如下所示:
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x
{
echo $cars[$x];
echo "
";
}
?>
for 循环
for 循环用于您预先知道脚本需要运行的次数的情况。
语法:
for (初始值; 条件; 增量)
{
要执行的代码;
}
例如上面的代码,初始值变量x为0,条件是变量x小于数组的长度,增量是每次循环变量x加1,当x不小于数组的长度后,循环结束。
PHP 关联数组
关联数组是使用您分配给数组的指定的键的数组。
这里有两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或者
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
随后可以在脚本中使用指定的键:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
遍历关联数组
遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "
";
}
?>
foreach有两种语法:
第一种:遍历给定的 数组语句 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
foreach (array_expression as $value)
第二种:同上,同时当前单元的键名也会在每次循环中被赋给变量 $key。
foreach (array_expression as $key => $value)
例如上面的代码采用的就是第二种方式,每次循环都会将键名赋值给变量x,也就是依次为Peter,Ben,Joe。
PHP - 数组排序函数
PHP 数组排序函数:
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
sort() - 对数组进行升序排列
下面的实例将 $cars 数组中的元素按照字母升序排列:
$cars=array("Volvo","BMW","Toyota");
sort($cars);
print_r($cars);
?>
运行结果
Array ( [0] => BMW [1] => Toyota [2] => Volvo )
下面的实例将 $numbers 数组中的元素按照数字升序排列:
$numbers=array(4,6,2,22,11);
sort($numbers);
print_r($numbers);
?>
运行结果
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 11 [4] => 22 )
rsort() - 对数组进行降序排列
下面的实例将 $cars 数组中的元素按照字母降序排列:
$cars=array("Volvo","BMW","Toyota");
rsort($cars);
print_r($cars);
?>
运行结果:
Array ( [0] => Volvo [1] => Toyota [2] => BMW )
下面的实例将 $numbers 数组中的元素按照数字降序排列:
$numbers=array(4,6,2,22,11);
rsort($numbers);
print_r($numbers);
?>
运行结果:
Array ( [0] => 22 [1] => 11 [2] => 6 [3] => 4 [4] => 2 )
asort() - 根据数组的值,对数组进行升序排列
下面的实例根据数组的值,对关联数组进行升序排列:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
asort($age);
print_r($age);
?>
运行结果:
Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
ksort() - 根据数组的键,对数组进行升序排列
下面的实例根据数组的键,对关联数组进行升序排列:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
ksort($age);
print_r($age);
?>
运行结果:
Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 )
arsort() - 根据数组的值,对数组进行降序排列
下面的实例根据数组的值,对关联数组进行降序排列:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
arsort($age);
print_r($age);
?>
运行结果:
Array ( [Joe] => 43 [Ben] => 37 [Peter] => 35 )
krsort() - 根据数组的键,对数组进行降序排列
下面的实例根据数组的键,对关联数组进行降序排列:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
krsort($age);
print_r($age);
?>
运行结果:
Array ( [Peter] => 35 [Joe] => 43 [Ben] => 37 )