2012-01-13 375 views
2

我的代碼中有兩個數組。 需要一次對這兩個數組執行foreach循環。是否可以同時提供兩個參數,如foreach($array1 as $data1 and $array2 as $data2) 或其他?PHP foreach循環

+0

爲什麼你需要在同一時間循環兩個數組? – Cyclonecode 2012-01-13 19:08:31

+1

他們有相同數量的元素嗎? – jprofitt 2012-01-13 19:09:53

回答

2

如果他們都相同的鍵,你可以這樣做:

foreach($array1 as $key=>data1){ 
    $data2 = $array2[$key]; 
} 
0

使用for或while循環例如

$i = 0; 
while($i < count($ar1) && $i < count($ar2) ) // $i less than both length ! 
{ 
    $ar1Item = $ar1[$i]; 
    $ar2Item = $ar2[$i]; 

    $i++; 
} 
+0

如果你使用的是一個while循環,事先將計數定義爲變量,不需要每個循環都進行計數(與下面的文章相同),使用while($ i <$ max1 && $ i <$ max2)並定義$ max1 = count($ ar1)和while循環之前的ar2相同 – capi 2012-01-14 00:27:39

1

不使用foreach。使用For,並使用遞增的索引,例如。 $ i ++一次訪問兩個數組。

這兩個數組的大小始終相同嗎? 那麼這將工作:

$max =sizeof($array); 
for($i = 0; $i < $max; $i++) 

array[$i].attribute 
array2[$i].attribute 

如果數組的大小不同,你可能需要調整你的方法。可能使用一段時間。

迭代方法:

http://php.net/manual/en/control-structures.while.php

http://php.net/manual/en/control-structures.for.php

http://php.net/manual/en/control-structures.do.while.php

+1

從不使用for內部的函數,它會在每個循環中執行它,您的示例應該是:for($ i = 0,$ max = sizeof ($ array); $ i <$ max; $ i ++) – capi 2012-01-14 00:25:12

+0

這就是'for'循環的用途。我會添加'{...}',所以你可以看到你從循環內部訪問數組。 – martinstoeckli 2012-01-14 15:05:27

0

無我有foreach知識,但可以用for輕鬆完成:

<?php 

$cond1 = 0<count($array1); 
$cond2 = 0<count($array2); 

for ($i=0;$cond1 || $cond2;$i++) 
{ 
    if ($cond1) 
    { 
     // work with $array1 
    } 
    if ($cond2) 
    { 
     // work with $array2 
    } 
    $cond1 = 0<count($array1); 
    $cond2 = 0<count($array2); 
} 

?> 
2

假設都具有相同數量的元素

,如果他們都被0索引的數組:

foreach ($array_1 as $key => $data_1) { 
    $data_2 = $array_2[$key]; 
} 

否則:

$keys = array_combine(array_keys($array_1), array_keys($array_2)); 

foreach ($keys as $key_1 => $key_2) { 
    $data_1 = $array_1[$key_1]; 
    $data_2 = $array_2[$key_2]; 
} 
+0

+1用於將'$ array_1'的鍵映射到'$ array_2'的鍵。 – 2012-01-13 19:25:38

+0

用鍵映射+1的不錯解決方案 – capi 2012-01-14 00:32:00