从数组中取出几个元素,就像“foreach”一样

时间:2012-10-17 22:03:43

标签: php arrays

如何一次从阵列中取出几个元素?就像foreach只有一个一样,我怎样才能在每次迭代中得到多个?

$data = array(1,2,3,4,5,6);
foreach($data as $a and $b) // pseudocode
{
    echo $a + $b;
}

有办法吗?

3 个答案:

答案 0 :(得分:3)

你可以尝试

$data = array(1,2,3,4,5,6);
echo "<pre>";

foreach循环使用array_chunk

foreach ( array_chunk($data, 2) as $v ) {
    $v[1] = isset($v[1]) ? $v[1] : 0;
    echo $v[0] + $v[1], PHP_EOL;
}

For循环

for($i = 0; $i < count($data); $i += 2) {
    $v = isset($data[$i + 1]) ? $data[$i + 1] : 0;
    echo $data[$i] + $v, PHP_EOL;
}

while循环

$i = 0;
while($v = array_slice($data, $i, 2)){
    $v[1] = isset($v[1]) ? $v[1] : 0;
    echo $v[0] + $v[1], PHP_EOL;
    $i += 2;
}

输出

3
7
11

答案 1 :(得分:2)

使用普通for循环并每次增加索引两次。您可以通过将索引增加所需的元素数来概括它。

// Note that if count($data) is not even, then we'll miss the last element
for($i = 0; ($i + 1) < count($data); $i += 2) {
    $first = $data[$i];
    $second = $data[$i + 1];
}

答案 2 :(得分:0)

据我所知,没有本地方法可以做到这一点 - 您最好的选择是使用for循环并调整索引以根据您的要求选择项目。例如:

for ($i = 1; $i < count($data)-1; $i++) {
    for ($j = $i; $j < count($data); $j++) {
        echo $data[$i] + $data[$j];
    }
}

for ($i = 1; $i < count($data); $i+=2) {
    echo $data[$i] + $data[$i+1];
}

注意:第二个选项存在数组中奇数个元素的问题。