使用內部陣列指標

每個陣列例項都包含一個內部指標。通過操作該指標,可以在不同時間從同一呼叫中檢索陣列的不同元素。

使用 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;
    }
}