PHP使用foreach循环一组结果

时间:2010-11-09 01:11:17

标签: php mysql

我试图从mysql数据库中获取结果以正确格式化为列,但无法弄清楚如何执行此操作。以下是我需要它的样子。

<div class="box">
<div class="row">
    <input name="1" type="radio" id="1" class="radio" />
    <label for="1">Result 1</label>
</div>
<div class="row">
    <input name="3" type="radio" id="3" class="radio" />
    <label for="3">Result 3</label>
</div>

<div class="box">
<div class="row">
    <input name="2" type="radio" id="2" class="radio" />
    <label for="2">Result 2</label>
</div>
<div class="row">
    <input name="4" type="radio" id="4" class="radio" />
    <label for="4">Result 4</label>
</div>

目前我只能使用以下内容进入一列:

<div class="box">
<?php
    foreach($roles as $row){
        echo '<div class="row">';
        echo '  <input name="_'.$row->key.'" type="radio" id="'.$row->key.'" class="radio" />';
        echo '  <label for="'.$row->key.'" style="text-transform: lowercase;">'.$row->name.'</label>';
        echo '</div>';
    }
?>

任何帮助都会很棒。

干杯

2 个答案:

答案 0 :(得分:1)

您应该使用 if 语句检查是奇数还是偶数。这不是一个非常干净的解决方案,但是:

<?php
    foreach($roles as $row){
        if($row->key%2 == 1) {
            echo '<div class="row">';
            echo '  <input name="_'.$row->key.'" type="radio" id="'.$row->key.'" class="radio" />';
            echo '  <label for="'.$row->key.'" style="text-transform: lowercase;">'.$row->name.'</label>';
            echo '</div>';
        } 
    }
    echo "</div><div class=\"box\">";
    foreach($roles as $row) {
        if($row->key%2 == 0) {
            echo '<div class="row">';
            echo '  <input name="_'.$row->key.'" type="radio" id="'.$row->key.'" class="radio" />';
            echo '  <label for="'.$row->key.'" style="text-transform: lowercase;">'.$row->name.'</label>';
            echo '</div>';
        }
    }
?>

答案 1 :(得分:0)

这是一个想法(没有考虑因素,我正在尝试编写最具说明性的代码......) 基本上,在每一行上,将$ i递增一。如果我们有两行,则关闭div,并在下一次迭代时打开一个新的div。

<?php
    $i = 0;
    $output = "";
    foreach($roles as $row){
        if($i > 1) {
           $i = 0;
        }
        if($i == 0) {
           // Open the div
           $output .= "<div class='box'">;
        }
        $output .= '<div class="row">';
        $output .= '  <input name="_'.$row->key.'" type="radio" id="'.$row->key.'" class="radio" />';
        $output .= '  <label for="'.$row->key.'" style="text-transform: lowercase;">'.$row->name.'</label>';
        $output .= '</div>';

        if($i == 0) {
            // Close the div
            $output .= "</div>";
        }

        $i++;
    }
    if($i != 1) {
        // We need an extra one here, just in case the loop finished on 
        // an odd number.
        $output .= "</div>";
    }
    echo $output;
?>