如何在循环中使用数组的一部分?

时间:2017-01-12 12:06:31

标签: php arrays foreach

我有一个数组:

$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
    }
}

有没有更好,更有效的方法呢?

4 个答案:

答案 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
}

该函数允许您为数组的结果部分指定长度和可选偏移量。

请参阅文档:http://php.net/manual/en/function.array-slice.php

答案 2 :(得分:0)

使用数组切片

 array_slice($array, 50, 100);

答案 3 :(得分:0)

foreach ($array as $key => $value)
{
    if ($key < 50 OR $key > 101)
    {
        continue;
    }
}