2011-07-07 4 views
0

私は結果ができない非常にイライラの問題があります。ちょうどそれが合わない。php array()foreachは使用している場合にのみループします。=結果を構築するには

私はそうのような)foreachの(上で処理するように配列を渡しています:

if (is_array($seminar)) { 
foreach ($seminar as $sem_id) 
    $sem_id_list .= "$sem_id"; 
    echo "$sem_id<br />"; 
} 

をあなたが(私の配列を見ることができるように)$セミナーで、その出力はそうのようになります。

Array 
(
    [0] => 3 
    [1] => 8 
    [2] => 9 
    [3] => 13 
    [4] => 14 
    [5] => 15 
) 

私のコードでわかるように、私は=のブロックを構築しています。は次のようになります:* $ sem_id_list。= "$ sem_id"; *とエコーアウトされる時間は389131415です。

しかし、私は単純に繰り返して、各値を表示しようとしています:* echo "$ sem_id
"; *最後の配列()項目しか取得しません!!

これまでにこの問題に遭遇したことはありません。私はここでシンプルなものを見逃していると思っていますが、私の経験から、これはうまくいくはずです。

サイドノートとして、var_dump($ seminar);これはあまりにも生成します。あなたはforeachの開きブレースと閉じ括弧が欠落している

array(6) { [0]=> string(1) "3" [1]=> string(1) "8" [2]=> string(1) "9" [3]=> string(2) "13" [4]=> string(2) "14" [5]=> string(2) "15" } 

答えて

5

。試してみてください:

if (is_array($seminar)) { 
    foreach ($seminar as $sem_id) { 
    $sem_id_list .= "$sem_id"; 
    echo "$sem_id<br />"; 
    } 
} 

またはリストを作成し、最後にそれを印刷:

if (is_array($seminar)) { 
    foreach ($seminar as $sem_id) { 
    $sem_id_list .= "$sem_id"; 
    } 
    echo "$sem_id_list"; 
} 
+3

OPが自分のコードを適切にインデントしていれば、これはかなり明らかでした。 –

+0

うん、それだった。私はそれを逃したとは信じられない!私は目の新しいセットがもっとたくさん見ることができると思う。 – OldWest

+2

OPのコードはまだ技術的に有効であり、彼がやりたいことではないことに注意してください。新しい行+インデントは大括弧やコロンを避ける方法ですが、次の行だけがブロック内で実行されます。なぜなら、 '$ sem_id'がグローバル変数になり、次の行だけが最後の項目を出力するからです。最後の反復。もう一つの答えはこれを説明しようとしています。 –

2

ます場合は、あなたのループチェック

if (is_array($seminar)) { 
foreach ($seminar as $sem_id){ 
    $sem_id_list .= "$sem_id"; 
    echo "$sem_id<br />"; 
} 
} 

http://codepad.org/0UZpQOZx

のために} {不足しています{}を与えないでください。あなたのループには文が1つだけあります。

$sem_id_list .= "$sem_id"; 

および行echo "$sem_id<br />";は、ループの完了後に1回だけ実行されます。

関連する問題