2017-08-06 19 views
1

SQLデータベースからエントリを印刷しようとしています。いくつかのエントリはイメージであり、それらを解析して適切なHTMLマークアップに入れたいと思います。foreachループの次の反復から値を取得する方法

データベース例

id | datatype | typetext 

78 | paragraph | "hello" 
79 | image  | "image.jpg" 
80 | paragraph | "goodbye" 

データの種類が指定された行に格納され、そしてIはdatatypeの値が「画像」である場合にキャッチする列datatypeが意味 - にジャンプし、次いでtypetext列に続いて、このイメージに適切なマークアップを準備します。例えば

、私が何をしようとしているいくつかの擬似コード:

if(column is datatype){ 
    if(datatype == 'image'){ 
     echo '<p>' . data inside accompanying typetext column . '</p>'; 
    } 
} 

ここに私の現在のコードです:最初のif声明の中で

//the array of the blog entry 
foreach($entry as $key => $entryUnit){ 

    //the array of the entry unit 
    foreach($entryUnit as $column => $cell){ 

     if($column == 'datatype'){ 
      if($key == 'image'){ 
       echo '<br/>'; 
       echo '<p style="color: pink;">' $cell . $entryUnit[$column + 1] . '</p>'; 
       echo '<br/>'; 
      } 
     } 

     else if($column == 'typetext'){ 
      echo '<br/>'; 
      echo $cell; 
      echo '<br/>'; 
     } 
    } 
} 

が、私はにジャンプしてみてください次の列はecho '<p style="color: pink;">' $cell . $entryUnit[$column + 1] . '</p>';ですが、これは機能しません。私はそれが思った通り、これはまた、動作しません..but

echo '<p>' . next($cell) . '</p>';` 

私も同じように、next()機能を利用しようとしました。このような

答えて

3

あなたはそのネストされたforeachループを必要としない、一つだけの簡単なforeachループ内ですることができますすべてのもの。

foreach($entry as $entryUnit){ 
    if($entryUnit['datatype'] == "image"){ 
     echo '<br/>'; 
     echo '<p style="color: pink;">' . $entryUnit['typetext'] . '</p>'; 
     echo '<br/>'; 
    }elseif($entryUnit['datatype'] == "paragraph"){ 
     echo '<br/>'; 
     echo $entryUnit['typetext']; 
     echo '<br/>'; 
    } 
} 
+0

それはそうしました。説明と助けをありがとう。 – rpivovar

2

Somethinkは動作するはずです:

//the array of the blog entry 
foreach($entry as $key => $entryUnit){ 
$i=0; 
    //the array of the entry unit 
    foreach($entryUnit as $column => $cell){ 

     if($column == 'datatype'){ 
      if($key == 'image'){ 
$i++; 
       echo '<br/>'; 
       echo '<p style="color: pink;">' $cell . $entryUnit[$i] . '</p>'; 
       echo '<br/>'; 
      } 
     } 

     else if($column == 'typetext'){ 
      echo '<br/>'; 
      echo $cell; 
      echo '<br/>'; 
     } 
    } 
} 
+0

$ iを最初のループの内側または両方のループの内側にリセットして、$ key == 'image'の場合のみインクリメントするか、それ以外の場合はインクリメントするかどうかはわかりません。 –

関連する問題