我需要用<ul>
标签包装我的html输出。
使用模数i可以使用
if( $i==0 || $i % 4==0 )
但是对于结束</ul>
,我需要一种3, 7, 11, 15, 19
等模式
这是我的尝试if ( $i!=0 && (($i-1) % 4 == 0 || $i==$max-1) )
完整代码
$str = '';
$i = 0;
$max = count($value['title']);
foreach ($value['title'] as $key2){
//if( $i==0 || $i==4 || $i==8 || $i==12 || $i==16 )
if( $i==0 || $i % 4==0 )
$str .= "<ul>";
$str .= "<li><a href='#'>$key2</a></li>";
if( $i==3 || $i==7 || $i==11 || $i==15 || $i==19 || $i==$max-1)
//if ( $i!=0 && (($i-1) % 4 == 0 || $i==$max-1) )
//if( $i!=0 || $i % 3==1 || $i==$max-1)
$str .= "</ul>";
$i++;
}
echo $str;
在发布问题之后,我通过将减号更改为加号if ( $i!=0 && (($i+1) % 4 == 0 || $i==$max-1) )
答案 0 :(得分:2)
我更喜欢使用自己在数组上使用内爆,但这会像你前进的那样做。
echo '<ul>';
foreach ( $array as $key => $value ) {
echo "<li><a href='#'>$value</a></li>";
if ( 3 === $key % 4 ) {
echo '</ul><ul>';
}
}
echo '</ul>';
我不喜欢这种方法,因为这意味着当数组有四个项目的多个时,会有一个空的ul标签。可能会有所作为,但我认为它草率。
相反,我建议:
$list = '';
foreach ( $array as $key => $value ) {
$list .="<li><a href='#'>$value</a></li>";
if ( 3 === $key % 4 ) {
echo "<ul>$list</ul>";
$list = '';
}
}
if ( $list ) {
echo "<ul>$list</ul>";
}
答案 1 :(得分:0)
像这样的东西
$value['title'] = range(0, 100);
$max = count($value['title']);
$i = 0;
$count = 4;
$str = '';
foreach ($value['title'] as $key2)
{
if ($i % $count == 0)
$str .= "<ul>" . PHP_EOL;
$str .= "<li><a href='#'>$key2</a></li>" . PHP_EOL;
if ($i % $count == $count - 1 || $i == $max - 1)
$str .= "</ul>" . PHP_EOL;
$i++;
}
echo $str;