如何使用foreach

时间:2017-11-23 09:01:43

标签: php html foreach

我在如何将我的html标签放到我的php foreach上时遇到了一些问题。

首先,我有这个代码,并与布局工作正常。

foreach ($query->result() as $row)
{
        echo '<div class="col-md-6">';
        echo '<div class="additional-amenities">';
        echo '<span class="available"><i class="fa fa-check-square"></i></span> <strong>{lang_bname}:</strong><span>'.$row->comminame.'</span>';
        echo '</div>';

        echo '<div class="additional-amenities">';
        echo '<span class="available"><i class="fa fa-check-square"></i></span> <strong>{lang_yrlaunched}:</strong><span>'.$row->mdeveloper.'</span>';
        echo '</div>';

        echo '<div class="additional-amenities">';
        echo '<span class="available"><i class="fa fa-check-square"></i></span> <strong>{lang_yrcompletion}:</strong><span>'.$row->gatedcommunity.'</span>';
        echo '</div>';

        echo '<div class="additional-amenities">';
        echo '<span class="available"><i class="fa fa-check-square"></i></span> <strong>{lang_tfloors}:</strong><span>'.$row->theme.'</span>';
        echo '</div>';

        echo '<div class="additional-amenities">';
        echo '<span class="available"><i class="fa fa-check-square"></i></span> <strong>{lang_bheight}:</strong><span>'.$row->resbuilding.'</span>';
        echo '</div>';
        echo '</div>';

        echo '<div class="col-md-6">';
        echo '<div class="additional-amenities">';
        echo '<span class="available"><i class="fa fa-check-square"></i></span> <strong>{lang_developer}:</strong><span>'.$row->commbuilding.'</span>';
        echo '</div>';
        echo '</div>';




}

现在我更改了我的代码(请查看下面的内容),并且对如何将html代码放入我之前的代码感到困惑。

这是我的代码

<div class="col-md-6">
    <?php foreach ($treefields as $key=>$item): ?>
      <?php if($key==0)echo '<div class="additional-amenities">' ?>

      <?php if($item['title'] == $estate_data_option_1057): ?>
      <span class="available"><i class="fa fa-check-square"></i></span><?php _che($item['title']); ?> 

      <?php if (count($item['childs']) > 0):
          end($item['childs']);
          $lastElementKey = key($item['childs']);
          foreach ($item['childs'] as $key_c=>$child): ?>
          <?php if(!empty($child['url'])): ?>
          <span class="available"><i class="fa fa-check-square"></i></span><a href='<?php _che($child['url']); ?>'><?php _che($child['title']); ?></a>
            <?php else:?>
            <span class="available"><i class="fa fa-check-square"></i></span><span><?php _che($child['title']); ?></span>
      <?php endif;
      if($lastElementKey != $key_c)echo ' - ';?>
      <?php endforeach;endif; ?>
           <?php echo '</div>';?>
      <?php else: ?> 
      <?php  ?>   
      <?php endif;?>

      <?php endforeach; ?>
  </div>

谢谢!

我的价值观没有问题,只是在插入HTML标签时遇到问题

2 个答案:

答案 0 :(得分:1)

混合HTML和PHP总是很痛苦。最好只在PHP标签中使用PHP,并在这些之外使用HTML。像这样:

您忘了一个endif;

<div class="col-md-6">
    <?php foreach($treefieldsas as $row):
        if($row['id'] == 0): ?>
            <div class="additional-amenities">'

                <?php if($row['title'] == $estate_data_option_1057): ?>

                    <span class="available"><i class="fa fa-check-square"></i></span><?php _che($row['title']); ?>

                    <?php if(count($row['childs']) > 0):
                        end($row['childs']);
                        $lastElementKey = key($row['childs']);
                        foreach($row['childs'] as $row2):
                            if( !empty($row2['url'])): ?>
                                <span class="available"><i class="fa fa-check-square"></i></span><a
                                        href='<?php _che($row2['url']); ?>'><?php _che($row2['title']); ?></a>
                            <?php else: ?>
                                <span class="available"><i class="fa fa-check-square"></i></span>
                                <span><?php _che($row2['title']); ?></span>
                            <?php endif;

                            if($lastElementKey != $key_c):?>
                                -
                            <?php endif; 
                         endforeach;
                    endif;
                endif; ?>
            </div>
        <?php else: ?>

        <?php endif;
    endforeach; ?>
</div>

如果不知道你的代码在做什么。所以我稍微改了一下,随意将它改回你正在使用的值。但是这样的事情应该有效。

难以阅读:

例如,这段代码将难以阅读,因为所有内容都在PHP中:

<?php if($row['title'] == $estate_data_option_1057):
{
    echo '<span class="available" ><i class="fa fa-check-square" ></i ></span >'. _che($row['title']); 
}?>

因为HTML代码在PHP标记内。我更倾向于使用:代替{},因为它更容易阅读。

另一个事实:

<?php endif; ?>
<?php endforeach;
endif;
endif; ?>

不干净。你应该用这个:

<?php endif; 
endforeach;
endif;
endif; ?>

(开始和结束PHP标签)。

希望这可以解决一些问题。

答案 1 :(得分:1)

你应该这样做:

$html = "FIXED_HEAD_ELEMENT";

foreach ($query->result() as $row) {

$html .= 'YOUR_HTML';

 if (condition == TRUE){
  $html .= 'THIS';
 } else {
  $html .= 'THAT';
 }

}

$html .= "FIXED_BOTTOM_ELEMENT";

echo $html;

我总是这样做。它非常干净和可读。