2016-09-15 21 views
0

は、実際に私はPHPフレームワークCodeIgniterのと協力し、私は2番目の1に最初foreachから値を比較したいが、私はエラーを取得しています。ここでは例:のForeach [PHP]

<?php foreach($posts->result() as $post): ?> 

    (html content) 

    <?php foreach($tags->result() as $tag) { 
     if($tag->id_users == $post->id_users) echo $tag->tag_name; 
    } ?> 

    (html content) 

<?php endforeach; ?> 

私はエラーを取得しています第二の内側$post->id_usersforeachを比較し、どのように私はこの問題を回避することができますか?

+1

内のループを避けるために。 – Tpojka

+0

さて、エラーが発生していますが、そのエラーはどういう意味ですか?あなたはあなたの質問にそれを含める必要があります。 – Qirel

+0

あなたはそのような通常と代替構文を混在させることはできません。どちらか一方を使用してください。両方を使用するとコードを読みにくくします。 – Mike

答えて

0

あなたは第二のforeachを閉じないでください。例えば

<?php foreach($posts->result() as $post): ?> foreach1 

    (...some html) 

    <?php foreach($tags->result() as $tag) { if($tag->id_users == $post->id_users) echo $tag->tag_name; } ?> //foreach2 

     (...some html) 

    <?php endforeach; ?> 

<?php endforeach; ?> 
0

のためにあなたは、foreachループ内$posts->result()$tags->result()を使用しないでください。 foreachが生きている間はいつでもチェックするようになるからです。 全体的に、スクリプトのパフォーマンスが低下します。

<?php 
$posts = $posts->result(); 
$tags = $tags->result(); 

foreach($posts as $post) { 
?> 
    << Other HTML code goes here >> 
    <?php 
    foreach($tags as $tag) { 
     if($tag->id_users == $post->id_users) { 
      echo $tag->tag_name; 
     } 
    ?> 
     << Other HTML code >> 
    <?php 
    } 
} 
1

そのよりよいかのブロックの後に中括弧を閉じて1以上の追加ループ

$tag_ids = array(); 
foreach($tags->result() as $tag) { 
    $tag_ids[] = $tag->id_users; 
} 

foreach ($posts->result() as $key => $post) { 
    if(in_array($post->id_users, $tag_ids)) { 

    } 
}