使用增量索引
此方法通過將整數從 0 遞增到陣列中的最大索引來工作。
$colors = ['red', 'yellow', 'blue', 'green'];
for ($i = 0; $i < count($colors); $i++) {
echo 'I am the color ' . $colors[$i] . '<br>';
}
這也允許以相反的順序迭代陣列而不使用 array_reverse
,如果陣列很大,這可能導致開銷。
$colors = ['red', 'yellow', 'blue', 'green'];
for ($i = count($colors) - 1; $i >= 0; $i--) {
echo 'I am the color ' . $colors[$i] . '<br>';
}
你可以使用此方法輕鬆跳過或回滾索引。
$array = ["alpha", "beta", "gamma", "delta", "epsilon"];
for ($i = 0; $i < count($array); $i++) {
echo $array[$i], PHP_EOL;
if ($array[$i] === "gamma") {
$array[$i] = "zeta";
$i -= 2;
} elseif ($array[$i] === "zeta") {
$i++;
}
}
輸出:
alpha
beta
gamma
beta
zeta
epsilon
對於沒有增量索引的陣列(包括索引順序相反的陣列,例如 [1 => "foo", 0 => "bar"]
,["foo" => "f", "bar" => "b"]
),這不能直接完成。可以使用 array_values
或 array_keys
代替:
$array = ["a" => "alpha", "b" => "beta", "c" => "gamma", "d" => "delta"];
$keys = array_keys($array);
for ($i = 0; $i < count($array); $i++) {
$key = $keys[$i];
$value = $array[$key];
echo "$value is $key\n";
}