如何拆分成表行

时间:2013-01-28 10:21:56

标签: php

我在这里尝试了很多解决方案,但我无法将这段代码拆分成多个表行。非常感谢提前!!

更新:对不起,如果我的问题不明确。我希望有5个cols并开始一个新的表格行,希望这会有所帮助。谢谢你的所有答案!

更新2:有人可以帮助我吗? Minesh的代码很接近,但我仍然会收到错误,请参阅下面的评论。很多,非常感谢提前!!

$opties.='<b>'.$option['name'].':</b><br /><table><tr>';

      foreach ($option['option_value'] as $option_value) { 

        $opties.= '<td><img src="image/cache/'.$option_thumb.'" /><br />'.$option_value['name'].'</td>';

      }
       $opties.='</tr></table>';

4 个答案:

答案 0 :(得分:2)

那是因为在循环中你只是把TD而不是TR。 您需要维护计数器,它在每个循环中递增1。

然后在 foreach 循环中,您可以使用模运算符进行检查,如果打印了4列,则需要完成TR标记并启动新的TR标记。

@UPDATED:根据用户对5 cols的评论

见下面的代码:

$opties.='<b>'.$option['name'].':</b><br /><table><tr>';
$cnt=0;
foreach ($option['option_value'] as $option_value) { 
    if($cnt % 5 == 0 && $cnt > 1) 
        $opties .= '</tr><tr>';
    $opties .= '<td><img src="image/cache/'.$option_thumb.'" /><br />'.$option_value['name'].'</td>';
    $cnt++;
}
if(count($option['option_value']) % 5 > 0)
    $opties.='</tr>';
$opties.='</table>';

答案 1 :(得分:1)

我不确定这是不是你想要的,但试试:

$opties.='<b>'.$option['name'].':</b><br /><table>';

      foreach ($option['option_value'] as $option_value) { 

        $opties.= '<tr><td><img src="image/cache/'.$option_thumb.'" /><br />'.$option_value['name'].'</td></tr>';

      }
$opties.='</table>';

如果您要创建多行,则必须在<tr>循环中使用foreach标记。

答案 2 :(得分:0)

首先

你应该有2个循环

foreach($opties as $rows => $column)
    //now it's row so echo 
    <tr>
    foreach( $column as $key => $value) {
        // now it's <td> turn
        <td> data </td>
    }
    </tr>
}

这只是解释2循环的伪代码

希望这个帮助;)

答案 3 :(得分:0)

我不知道你的数组包含什么,所以我给你一个更通用的例子。

$array  = array(1,2,3,4,5,6,7,8,9,10);
$chunks = array_chunk($array, 5);
$output = '<table>' . PHP_EOL;

foreach ($chunks as $row) {
    $output .= '<tr>';

    foreach ($row as $col) {
        $output .= '<td>' . $col . '</td>';
    }

    $output .= '</tr>' . PHP_EOL;
};

$output .= '</table>';

echo $output;

这与@ Piya的答案略有不同。