【发布时间】:2019-09-23 14:41:50
【问题描述】:
这仅适用于具有索引号的数组。例如我有这个数组;
$array = [
"0" => "number 1",
"1" => "number 2",
"2" => "number 3",
"3" => "number 4",
"4" => "number 5",
"5" => "number 6",
"6" => "number 7",
"7" => "number 8",
"8" => "number 9"
];
我想跳过某些关键索引范围的循环,例如,如果索引的数量在 0 到 5 范围内,则跳过 foreach。这意味着我们可以这样做。
foreach($array as $key => $value){
if(array_key_exist($key, range(0,5))
continue;
echo $value."<br/>"
}
或者我们可以使用for...循环
for($ind = 0; $ind < count($array); $ind++){
if(array_key_exist($ind, range(0,5))
continue;
echo $arr[$ind]."<br/>"
}
如何在不使用 continue 或先搜索 array_key 的情况下跳过索引?确定上面的代码对我来说看起来不错,但是如果我有一堆数组键和值,我认为这不是一个好的选择。
【问题讨论】:
-
为什么不在 6 点开始你的
for循环呢?for($ind = 6; $ind < count($array); $ind++){那么你根本不需要检查循环。 -
@Nick 很好,这是正确的,但我需要这样做,而不是从 6 开始循环,因为这只是更大情况的基本情况,所以我需要知道基本的如何跳过特定范围索引的循环。
-
使用
array_key_exists效率很低。使用if ($ind >= 0 && $ind <= 5) continue;会更快。但是......如果没有看到你正在尝试做的事情的真正复杂性(你提到“一堆数组键和值”),很难提供一个好的解决方案。 -
使用
array_diff然后循环输出怎么样? -
如果你想跳过任意范围的键{不需要从数组的开头或结尾},最好的选择是使用
print_r(array_diff_key($array, array_flip(range(3,5))));
标签: php arrays for-loop foreach