1. 初始化
1.1 array()枚举成员
$products = array('Tires', 'Oil', 'Spark Plugs');
$prices = array('Tires' => 12, 'Oil' => 7.5, 'Spark Plugs' => 32);
1.2 range()生成
range(start, end, step = 1)
$odds = range(1, 10, 2);
$letters = range('a', 'z');
2. 访问元素
echo $products[2];
$products[8] = 'Yes';
数组的Key不必是连续的。它更像是个 Key --> Value 的映射表。
3. 循环访问
可以用 foreach 与 list() 和 each() 结构。
foreach ($prices as $key => $value) {
echo $key . ' - ' . $value . '<br/>';
}
while ($element = each($prices)) {
echo $element['key'];
echo ' - ';
echo $element['value'];
echo '<br/>';
}
while (list($product, $price) = each($prices)) {
$echo "$product - $price<br/>";
}
其实在数组中一个pos迭代器,初始为第一个元素。
每次each($prices) 时都会返回当前pos所指向的数组元素,并将pos指向下一个元素位置。
如果已经访问到最后一个元素了,那么 each($prices) 返回空值,于是while() 循环退出。
在每次开始循环前应使用 reset($prices), 将数组中的pos置为第一个元素的位置。
4. PHP数组支持嵌套数组实现多维数组
$products = array (
array('TIR', 'Tires', 100),
array('OIL', 'Oil', 10),
array('SPK', 'Spark Plugs', 4)
);
5. 数组排序
5.1 sort()函数
sort(array, method=SORT_REGULAR)。
array为需要排序的数组,method为排序方法,默认为SORT_REGULAR,还可以是SORT_NUMERIC与SORT_STRING,表示是按数值排序还是字符串大小进行排序。
sort() 函数会影响转入的数组。
5.2 asort()与ksort()函数
asort()是按数组值进行排序,ksort()是按数组Key进行排序。
5.3 反向排序
以此对应的反向排序有 rsort(), arsort(), krsort()
5.4 自定义排序 usort()
usort(数组, 比较函数)
6. 数组其它操作
6.1 each(), current(), reset(), end(), next(), pos(), prev()
each()与next()功能相似,each()是返回pos相前元素,然后将pos移向下一个元素。而next()则是先移到下一个元素移置,再返回pos所指的元素。
current()则返回当前pos所指的元素。
reset()将pos重置到第一个元素,而end()则是将pos指向最后一个元素。
prev()可以与end()配合使用,就像next()与reset()那样。
6.2 数组遍历 array_walk()
bool array_walk(array arr, string func, [mixed userdata])
function my_print($value) {
echo "$value<br/>";
}
array_walk($array, 'my_print');
??为什么回调函数传的是字符串??
6.3 统计元素
count(), sizeof(), array_count_values()
count(), sizeof() 都是返回数组元素个数
array_count_values() 是统一数组成元素的重复次数,并生成以元素为key,重复次数为value的新数组。
6.4 将数组转换成变量
extract(array var_array [, int extract_type] [, string prefix]);
$arr = array('VAR1' => 12, 'Name' = "Hevake");
extract($arry);
echo "$VAR1, $Name";