使用内部数组指针
每个数组实例都包含一个内部指针。通过操作该指针,可以在不同时间从同一调用中检索数组的不同元素。
使用 each
每次调用 each()
都会返回当前数组元素的键和值,并递增内部数组指针。
$array = ["f" => "foo", "b" => "bar"];
while (list($key, $value) = each($array)) {
echo "$value begins with $key";
}
使用 next
$array = ["Alpha", "Beta", "Gamma", "Delta"];
while (($value = next($array)) !== false) {
echo "$value\n";
}
请注意,此示例假定数组中的元素与 boolean false
不相同。要防止这种假设,请使用 key
检查内部指针是否已到达数组的末尾:
$array = ["Alpha", "Beta", "Gamma", "Delta"];
while (key($array) !== null) {
echo current($array) . PHP_EOL;
next($array);
}
这也便于在没有直接循环的情况下迭代数组:
class ColorPicker {
private $colors = ["#FF0064", "#0064FF", "#64FF00", "#FF6400", "#00FF64", "#6400FF"];
public function nextColor() : string {
$result = next($colors);
// if end of array reached
if (key($colors) === null) {
reset($colors);
}
return $result;
}
}