我有一个数组:
$array = array();
$array[0] = "string";
$array[1] = "string1";
$array[2] = "string2";
$array[3] = "string3";
...
$array[99] = "string99";
$array[100] = "string100";
如果我想使用数组的所有值:
foreach ($array as $key => $value)
{
// Do something with the value
}
根据条件,我可能只需要处理数组的一部分(例如50-100)。如何从数组中提取密钥50-100?
有这种方式,但效率似乎不高:
foreach ($array as $key => $value)
{
if ($key > 49)
{
// Do something with the value
}
}
有没有更好,更有效的方法呢?
答案 0 :(得分:3)
你问题中的数组有数字索引,所以你可以使用for
循环。然后只处理指定范围内的键。当您使用foreach
时,所有元素都将是。
范围< 50,100>
的示例for($i=50; $i<=100; $i++) {
//do something with $array[$i]
}
所有其他密钥都不会被处理。你也可以使用像array_slice()
这样的函数,但效率不高。
答案 1 :(得分:2)
PHP为此提供了函数array_slice()
:
仅使用50键以上元素的示例:
foreach (array_slice($array, 50) as $key => $value) {
// Do something with the value
}
仅使用偏移量为50的10个条目到元素50-60:
foreach (array_slice($array, 50, 10) as $key => $value) {
// Do something with the value
}
该函数允许您为数组的结果部分指定长度和可选偏移量。
答案 2 :(得分:0)
使用数组切片
array_slice($array, 50, 100);
答案 3 :(得分:0)
foreach ($array as $key => $value)
{
if ($key < 50 OR $key > 101)
{
continue;
}
}