2

配列をループして、それらをループ インクリメント カウンターとして使用したい場合、どうすればよいでしょうか?

たとえば、配列に最大 5 つの値を格納しています。それらをループしたいのですが、最初のループで特定の値を使用し、次に別の特定の値を使用したいと考えています。

以下は疑似コードですが、2 番目の配列を図に取り込むにはどうすればよいでしょうか。最初の範囲は動的で空になるか、最大 5 つの値を持ちます。2番目は修正されます。

$array = array(2,6,8); // Dynamic

$array2 = array(11,45,67,83,99); Fixed 5 values

foreach ($array as $value) {
    // First loop, insert or use both 2 and 11 together
    // Second loop, insert or use both 6 and 45
    // Third loop, insert or use both 8 and 67
}
4

6 に答える 6

2

使用$index => $val:

foreach ($array2 as $index => $value) {
    if ( isset($array[ $index ]) ) {
          echo $array[ $index ]; // 2, then 6, then 8
    }
    echo $value; // 11, then 45, then 67, then 83, then 99 
}

ここで実際に見てください:http://codepad.viper-7.com/gpPmUG


最初の配列の最後に到達したら停止する場合は、最初の配列をループします。

foreach ($array as $index => $value) {
    echo $value; // 2, then 6, then 8
    echo $array2[ $index ]; // 11, then 45, then 67
}

ここで実際に見てください:http://codepad.viper-7.com/578zfQ

于 2013-01-04T14:54:41.113 に答える
1

あなたはこれを試すことができます-

foreach ($array as $index => $value) {
      echo $array[ $index ]; // 2, then 6, then 8
      echo $array2[ $index ]; // 11, then 45, then 67

}
于 2013-01-04T14:58:39.787 に答える
1

これは、無駄で重い非標準ライブラリを使用しない、クリーンでシンプルなソリューションです。

$a = count($array);
$b = count($array2);
$x = ($a > $b) ? $b : $a;
for ($i = 0; $i < $x; $i++) {
    $array[$i]; // this will be 2 the first iteration, then 6, then 8.
    $array2[$i]; // this will be 11 the first iteration, then 45, then 67.
}

2 つの配列を一緒に使用するために、メイン ループ$i内で 2 つの配列の同じ位置を識別するために使用するだけです。forメインforループは、2 つの配列のいずれも未定義のインデックスを使用しないように、適切な回数だけ反復します (通知エラーの原因となります)。

于 2013-01-04T14:57:15.057 に答える
0

両方の配列の最小の長さを決定します。

次に、インデックスiを 1 から最小の長さまでループします。

i両方の配列の -th 要素を使用できるようになりました

于 2013-01-04T14:55:03.103 に答える
0

ここにあなたが欲しいと思うものがあります:

foreach($array as $value){
     for($x = $value; $array[$value]; $x++){
       //Do something here...
     }
}
于 2013-01-04T14:55:53.547 に答える
0

MultipleIteratorを使用できます。

$arrays = new MultipleIterator(
    MultipleIterator::MIT_NEED_ANY|MultipleIterator::MIT_KEYS_NUMERIC
);
$arrays->attachIterator(new ArrayIterator([2,6,8]));
$arrays->attachIterator(new ArrayIterator([11,45,67,83,99]));

foreach ($arrays as $value) {
    print_r($value);
}

印刷されます:

Array ( [0] => 2 [1] => 11 ) 
Array ( [0] => 6 [1] => 45 ) 
Array ( [0] => 8 [1] => 67 ) 
Array ( [0] => [1] => 83 ) 
Array ( [0] => [1] => 99 ) 

両方の配列に値が必要な場合は、フラグを次のように変更します。

MultipleIterator::MIT_NEED_ALL|MultipleIterator::MIT_KEYS_NUMERIC

それはそれから与えるでしょう

Array ( [0] => 2 [1] => 11 ) 
Array ( [0] => 6 [1] => 45 ) 
Array ( [0] => 8 [1] => 67 ) 
于 2013-01-04T15:00:43.577 に答える