2011-12-27 5 views
1

を示すforeachループIは、以下のように多次元配列があります: -PHP多次元配列 - 配列の最後

$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

+0

コードを読みやすくするためにインデントが更新されました。 @FirstLast、質問を編集して 'echo $ ws 'を移動してください。
'; '実際にあなたのコード内に存在します。 –

答えて

1

構文を修正してください。 echoはあなたの意図通りに{}に含まれていません。さもなければ、PHPはエコーを行うつもりであると仮定し、内部ループを実行したいとは思いません。

は修正するには:

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

あなたがミスをしなかったので。コードの2行目と3行目が逆になります。したがって、コードがエコーを介して外部foreachでループされ、次いで、ブラケット{で囲まれた「セクション」において、(内側foreach)を別のループを行っている

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

:コードは次のようでなければなりません。

+0

Aurelio De Rosaに感謝します。 –

1
echo $ws.'<br/>'