2012-07-09 92 views
0

$欄包含4(在這個例子中,但可能遠不止4)值我想複製到$ foo和$等等這樣:一個特別的雙「for」循環

$foo[0] = $bar[0]; 
$foo[1] = $bar[2]; 
$blah[0] = $bar[1]; 
$blah[1] = $bar[3]; 

所以, $ bar的偶數行將被複制到$ foo [i]中,奇數行將被複制到$ blah [i]中。

我試圖與:

for($i=0; $i<2; $i++) 
{ 
    for($j=0; $j<4; $j++) 
    { 
     if($j % 2 == 0) 
      { 
      $foo[$i] = $bar[$j]; // EVEN 
      } 
      else 
      { 
      $blah[$i] = $bar[$j]; // ODD 
     } 
    } 
} 

但是如果我顯示$ foo和$嗒嗒的輸出,$ foo的[0]等於$ foo的[1],和$嗒嗒[0]等於到$ blah [1],而它們應該包含不同的值。

實施例: 來源:

$bar[0]: 27.8 
$bar[1]: Napoli-Posillipo 
$bar[2]: 29 
$bar[3]: Stadio San Paolo di Napoli, Napoli 

(錯誤的)循環的結果是:

$foo[0] = 29 (it should be 27.8) 
$foo[1] = 29 
$blah[0] = Stadio San Paolo di Napoli, Napoli (it should be Napoli-Posillipo) 
$blah[1] = Stadio San Paolo di Napoli, Napoli 

任何提示? 感謝

+0

你**需要正確縮進代碼* *! – ThiefMaster 2012-07-09 20:44:58

回答

14
你讓複雜

,一些簡單的像這應該工作:

foreach ($bar as $k=>$v){ 
    if($k % 2 == 0){ 
     $foo[] = $v; // EVEN 
    }else{ 
     $blah[] = $v; // ODD 
    } 
} 
+0

我只是在想:「我不需要雙循環」。你快了幾分鐘:) – 2012-07-09 20:48:08

+0

你是對的,那雙循環中有一些奇怪的東西......你的解決方案效果很好。 :) – flapane 2012-07-09 20:52:31

3

什麼關於某事像

foreach($bar as $key => $value) { 
    if($key % 2 == 0) { 
     //even 
     $foo[] = $value; 
    } 
    else { 
     // odd 
     $blah[] = $value; 
    } 
} 
+0

我太遲了...... :) – 2012-07-09 20:49:49

+0

我也是,而且Dagon的代碼更乾淨 - +1 – LSerni 2012-07-09 20:51:46

+0

是的,你們兩個都提出了相同的解決方案。感謝你,:) :) – flapane 2012-07-09 20:54:20

1

你自己說的:

「所以, $ bar的偶數行將被複制到$ foo [i]中,奇數行將被複制到$ blah [i]中。

週期中的所有$酒吧和奇數行復制到$等等,甚至到$ foo的:

for ($i = 0; $i < 4; $i++) 
    if ($i % 2) 
    $blah[$i/2] = $bar[$i]; 
    else 
    $foo[$i/2] = $foo[$i]; 

在一般情況下:

switch($i % N) // "N" for Napoli :-D 
    { 
    case 0: $VAR1[$i/N] = $bar[$i]; break; 
    case 1: $VAR2[$i/N] = $bar[$i]; break; 
    ... 
    } 
+0

謝謝,現在整個問題都很清楚,我想我沒有設法正確地轉化爲工作代碼,這是我腦海中所想到的。 – flapane 2012-07-09 20:55:46