2011-12-27 143 views
1

我有一個多維數組如下: -PHP多維數組 - foreach循環顯示最後一個數組

$worksheet = array(
    'sheet 1' => array(
    '#1 sheet 1', 
    ' #2 sheet 1', 
    '#3 sheet 1' 
), 

    'sheet 2' => array(
    '#1 sheet 2', 
    '#2 sheet 2' 
), 

    'sheet 3' => array(
    '#1 sheet 3', 
    '#2 sheet 3' 
) 
); 

然後我運行PHP代碼如下:

foreach($worksheet as $ws=>$value) 
    echo $ws.'<br/>'; 
{ 
    foreach($value as $sheet=>$ivalue) 
    { 
    echo $ivalue.'<br/>'; 
    } 
} 

上面的代碼纔會生成,最後陣列狀如下:

 
sheet 1, sheet 2, sheet 3, #1 sheet 3, #2 sheet 3 

什麼都得發生在我的:

 
#1 sheet 1, #2 sheet 1, #3 sheet 1, #1 sheet 2, #2 sheet 2. 
+0

試着問前清理你的縮進內。 – babonk 2011-12-27 01:38:21

+0

更新了縮進以使代碼更具可讀性。 @FirstLast,請編輯您的問題以移動'echo $ ws。'
';'它實際存在於你的代碼中。 – 2011-12-27 01:41:59

回答

1

修復您的語法。按照您的意願,echo不在{}之內。否則,PHP會假定你只是想做回聲,並不會意識到你想要做一個內部循環。

要解決:

foreach($worksheet as $ws=>$value) 
{ 
    echo $ws.'<br/>'; 
1

因爲你做了一個錯誤。代碼的第二行和第三行是相反的。該代碼應該是這樣的:

foreach($worksheet as $ws=>$value) 
{ 
     echo $ws.'<br/>'; 

因此,您的代碼與外部foreach通過回波循環,然後,在由托架{包圍的「部分」,是做另一個循環(內foreach) 。

+0

謝謝奧雷利奧德羅莎。 – 2011-12-27 01:44:43

1
echo $ws.'<br/>' 

應該是括號