这仅适用于具有索引号的数组。例如,我有这个数组;$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/>" }我如何不使用继续或先搜索array_key而跳过索引?确保上面的代码对我来说很好,但是如果我有一堆数组键和值,我认为这不是一个好选择。
2 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
您可以从第5个索引开始获取数组的切片,再到其余部分,
$result = array_slice($array,5,count($array)-5, true);
array_slice —提取数组的一部分
注意事项:
默认情况下,array_slice()将重新排序并重置整数数组索引。通过将preserve_keys设置为TRUE,可以更改此行为。不管此参数如何,始终会保留字符串键。
演示。
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
您可以将array_diff用作:
$wantKeys = array_diff(array_keys($array), range(1,5));
现在,您所需要的只是在$wantKeys
as上循环:
foreach($wantKeys as $k) echo $array[$k]; // only wanted values
可以通过array_diff_keys实现相同的想法:
$wantKeys = array_diff_key($array, array_flip(range(1,5)));
- 2 回答
- 0 关注
- 185 浏览
添加回答
举报
0/150
提交
取消