each()函数返回input_array的当前键/值对,并将指针推进一个位置。
其形式如下:
array each(array array)
返回的数组包含四个键,键0和key包含键名,而键1和value包含相应的数据。如果执行each()前指针位于数组末尾,则返回false。
/**
desc:循环输出数组
link:www.
date:2013/2/24 10:59
*/
$fruits = array("apple", "banana", "orange", "pear");
print_r ( each($fruits) );
// Array ( [1] => apple [value] => apple [0] => 0 [key] => 0 )
?>
each() 经常和 list() 结合使用来遍历数组。
本例与上例类似,不过循环输出了整个数组:
/**
desc:循环输出整个数组
link:www.
date:2013/2/24 10:59
*/
$fruits = array("apple", "banana", "orange", "pear");
reset($fruits);
while (list($key, $val) = each($fruits))
{
echo "$key => $val<br />";
}
// 0 => apple
// 1 => banana
// 2 => orange
// 3 => pear
?>
因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上例中如果我们在循环内部将 $fruits 赋给了另一个变量的话将会导致无限循环。
这就完成了数组的遍历。
查找、筛选与搜索数组元素是数组操作的一些常见功能。
array_splice()函数会删除数组中从offset开始到offset+length 结束的所有元素,并以数组的形式返回所删除的元素。
其形式为:
array array_splice ( array array , int offset[,length[,array replacement]])
offset 为正值时,则接合将从距数组开头的offset 位置开始,offset 为负值时,接合将从距数组末尾的offset 位置开始。如果忽略可选的length 参数,则从offset 位置开始到数组结束之间的所有元素都将被删除。如果给出了length 且为正值,则接合将在距数组开头的offset + leng th 位置结束。相反,如果给出了length且为负值,则结合将在距数组开头的count(input_array)-length的位置结束。
例1:
/**
desc:接合数组的例子
link:www.
date:2013/2/24 10:59
*/
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");
$subset = array_splice($fruits, 4);
print_r($fruits);
print_r($subset);
// output
// Array ( [0] => Apple [1] => Banana [2] => Orange [3] => Pear )
// Array ( [0] => Grape [1] => Lemon [2] => Watermelon )
?>
可以使用可选参数replacement来指定取代目标部分的数组。
例2:
/**
desc:接合数组,可选参数替换
link:www.
date:2013/2/24 10:59
*/
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");
$subset = array_splice($fruits, 2, -1, array("Green Apple", "Red Apple"));
print_r($fruits);
print_r($subset);
// output
// Array ( [0] => Apple [1] => Banana [2] => Green Apple [3] => Red Apple [4] => Watermelon )
// Array ( [0] => Orange [1] => Pear [2] => Grape [3] => Lemon )
?>
key()函数返回input_array中当前指针所在位置的键。
其形式如下:
mixed key(array array)
例,迭代处理数组并移动指针来输出$fruits数组的键:
/**
desc:迭代数组
link:www.
date:2013/2/24
*/
$fruits = array("apple"=>"red", "banana"=>"yellow");
while ($key = key($fruits)) {
printf("%s <br />", $key);
next($fruits);
}
// apple
// banana
?>
注意,每次调用key()时不会移动指针。
为此需要使用next()函数,这个函数的唯一作用就是完成推进指针的任务。