2016-05-18 12 views
-2

PHPでは、各ループに対して複数の配列を渡す方法が不思議です。PHP foreach関数に複数の値を渡す

たとえば、以下では、ループごとに2回書き込まれるのではなく、$array1$array2の両方を各ループに渡したいと考えています。

$array1 = somestring; 
$array2 = someotherstring; 

foreach ($array1 as $vals) { 
    //do something cool 
} 

編集:明確にするために、私は配列の宣言が有効ではないことを認識しています。それは単なるプレースホルダです。それはdownvoteに値するものではありません。 foreachループ全体を$ array1で実行し、$ array2で再度実行したい。

+0

'$ arrayForEach = array_merge($ array1、$ array2); ' – Tyr

+1

この質問は、あなたが情報を追加しなければ本当に答えることはできません。両方の配列を1つのループの中で処理したいと思っても問題ありません。しかし、あなたはそれが扱われることを意味する_how_を教えなければなりません。両方の配列の要素に対して1つの反復処理が必要ですか?または、両方の配列で繰り返しを繰り返しますか?または... – arkascha

答えて

0
$array3 = array_merge($array1, $array2); 
foreach ($array3 as $vals) { 
    // do your coolness 
} 
+0

あなたが他の何かのために$ array3を必要としないならば: 'foreach(array_merge($ array1、$ array2)$ vals){' –

+0

あなたは二つの文字列を 'array_merge()'できません... – arkascha

0

することができますジップインデックス配列array_map(null, $array1, $array2)の一種。この方法でのリストがtuplesになります。最初の要素は$array1であり、2番目の要素は$array2です。このリストを反復して、両方の配列要素に1回の反復でアクセスできます。

$array1 = [1, 2, 3]; 
$array2 = [1, 2, 3]; 

$zip = array_map(null, $array1, $array2); 

foreach ($zip as $tuple) { 
    echo $tuple[0], '-', $tuple[1], PHP_EOL; 
} 

ここはdemoです。

配列(この場合はリスト)は、同じ長さのである必要があることに注意してください。他の賢明なあなたは壊れたtuplesで終わるでしょう、その1つの要素はnullになります。

+0

こんにちは、あなたの答え私の意図した通りではありませんが、私は最初の質問で明確にしませんでした。私がしたかったのは、foreachループ全体をarray1で実行した後、再びarray2でループ全体を実行することでした。私は明確でないことをお詫びします。 – djames

関連する問題