12

同じサイズの 2 つの配列を同時に反復するにはどうすればよいですか?

たとえば、最初の配列$a = array( 1,2,3,4,5); 2 番目の配列$b = array(1,2,3,4,5);

両方を反復して欲しい結果は、ループプロセスが同じ値を通過して次のような結果を生成することです

  1-1
  2-2
  3-3
  4-4
  5-5

以下のようにしようとしましたが、うまくいきませんでした。最初のループを繰り返します。

foreach($a as $content) {
    foreach($b as $contentb){
        echo $a."-".$b."<br />"; 
    }
}
4

3 に答える 3

21

最も効率的ではありませんが、SPL の multipleIterator のデモンストレーションです

$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($a));
$mi->attachIterator(new ArrayIterator($b));

$newArray = array();
foreach ( $mi as $value ) {
    list($value1, $value2) = $value;
    echo $value1 , '-' , $value2 , PHP_EOL;
}
于 2013-03-18T21:38:26.810 に答える
18

forの代わりに通常のループを使用しforeachて、明示的なループ カウンターを取得します。

for($i=0; $i<count($content)-1; $i++) {
  echo $content[$i].'-'.$contentb[$i];
}

文字列ベースのインデックス付き配列を使用したい場合で、文字列インデックスが配列間で等しいことがわかっている場合は、foreach構造に固執することができます

foreach($content as $key=>$item) {
  echo $item.'-'.$contentb[$key];
}
于 2013-03-18T21:37:17.850 に答える
3

サイズが同じ場合は、次のようにします。

foreach($a as $key => $content){
   $contentb = $b[$key];
   echo($content."-".$contentb."<br />");
}
于 2013-03-18T21:45:23.310 に答える