1

配列から一度に複数の要素を取得するにはどうすればよいですか? 同様foreachに1つだけですが、各反復で複数を取得するにはどうすればよいですか?

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

それを行う方法はありますか?

4

3 に答える 3

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
于 2012-10-17T22:05:56.080 に答える
2

通常のforループを使用して、インデックスを毎回2回インクリメントします。必要な要素の数だけインデックスをインクリメントすることで、これを一般化できます。

// 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];
}
于 2012-10-17T22:06:04.560 に答える
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];
}

注意: 2 番目のオプションには、配列内の要素数が奇数であるという問題があります。

于 2012-10-17T22:10:42.360 に答える