使用数组
存储在数组中的值称为数组元素。每个数组元素有一个相关的索引(也称为关键字),它可以用来访问元素。PHP允许使用数字或字符串作为数组的索引,这样可以使得索引更具意义和有用。
1 数字索引数组
1.1 数字索引数组的初始化
举个例子:
$a = array(1, 2, 3);
如果需要将按升序排列的数字保存在一个数组中,可以使用range()函数自动创建这个函数,例:
$b = range(1, 10);
这将创建一个从1到10的数字数组。range()函数还具有第三个可选参数,这个参数用来设置值之间的步幅,如创建从1到10的奇数数组:
$c = range(1, 10, 2);
range()函数还可以对字符进行操作,如:
$d = range('a', 'z');
1.2 访问数组
举个例子:
$prices = array(100, 50, 10);
for ($i=0; $i<count($prices); $i++) {
echo $prices[$i]." ";
}
2 使用不同索引的数组
2.1 初始化相关数组
以下例子将会创建一个以产品名字为关键字、以价格为值的数组:
$prices = array( 'Tires' => 100, 'Oil' => 50, 'Spark' => 10);
2.2 访问数组元素
举个例子:
$prices['Tires'];
这样即可访问到100.
循环访问全部元素的示例代码:
$prices = array( 'Tires' => 100, 'Oil' => 50, 'Spark' => 10);
printf("foreach访问<br>");
foreach ($prices as $key => $value) {
echo $key. '=>' .$value. "<br>";
}
echo "<hr>";
reset($prices);//注意each()函数时,数组将记录当前元素,若希望再次使用该数组,先重置下
printf("each访问<br>");
while (list($key, $value) = each($prices)) {
echo $key. '-' .$value. "<br>";
}
2.3 多维数组
举个例子:
$products = array( array('Code' => 'TIR', 'Desc' => 'Tires', 'Price' => 200),
array('Code' => 'OIL', 'Desc' => 'Oil', 'Price' => 400),
array('Code' => 'SPK', 'Desc' => 'Spark', 'Price' =>50)
);
printf("一层for循环逐行访问<br>");
for ($row=0; $row < 3; $row++) {
echo $products[$row]['Code']."-".$products[$row]['Desc']."-".$products[$row]['Price']."<br>";
}
echo "<hr>";
printf("嵌套循环来访问<br>");
for ($row=0; $row < 3; $row++) {
while (list($key, $value) = each($products[$row])) {
echo $key."-".$value."<br>";
//echo $element['key']."-".$element['value']."<br>";
}
}
可以看到:访问多维数组内的元素,通过循环访问到内部的一维数组再用相关索引就可以访问到元素了。
3 数组排序
3.1 使用sort()函数
举个例子:
$num = array(1, 8, 2, 4, 7, 5);
sort($num);
foreach ($num as $key => $value) {
echo $value." ";
}
3.2 使用asort()和ksort()函数
asort()函数根据数组的每个元素的值进行排序;ksort()函数根据数组的每个元素的索引进行排序。
3.3 反向排序
sort()、asort()和ksort()函数都是升序排序,对应的降序排序函数分别为:
rsort()、arsort()和krsort()。
3.4 多维数组的用户自定义排序
参见文章:PHP多维数组排序
4 其他数组函数
- shuffle()–打乱数组并按随机顺序排列
- array_reverse()–返回一个内容与参数数组相同但是顺序相反的数组
- count()、sizeof()–统计数组元素个数
- extract()–将数组转化成标量变量
- explode()–按传入的字符分割数组,并返回一新数组
针对最后两个函数各举个例子:
$str = 'bken2016@163.com';
$str = explode("@", $str);
echo count($str)."<br>";
echo $str[1];//输出163.com
$prices = array( 'Tires' => 100, 'Oil' => 50, 'Spark' => 10);
extract($prices);
echo $Tires;//输出100