0

我尝试了这里给出的许多解决方案,但我无法将这段代码拆分为多个表行。提前谢谢了!!

更新:对不起,如果我的问题不清楚。我希望有 5 个列并在此之后开始一个新的表格行,希望这会有所帮助。感谢所有的答案!

更新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

4 回答 4

2

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

然后在foreach循环中,您可以使用模运算符检查是否打印了 4 列,您需要完成 TR 标签并开始新的 TR 标签。

@更新:基于用户对 5 列的评论

见下面的代码:

$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>';
于 2013-01-28T10:25:46.100 回答
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

于 2013-01-28T10:27:43.630 回答
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 个循环的伪代码

希望这有帮助;)

于 2013-01-28T10:28:01.887 回答
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 的回答略有不同。

于 2013-02-09T09:21:34.597 回答