1

HTML出力を<ul>タグでラップする必要があります。
モジュラスを使用して、次を使用して開始タグを開始できます(4日ごと)

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) )

4

2 に答える 2

2

私は自分で配列で内破を使用することを好みますが、これはあなたが向かっていた方法で物事を行います。

echo '<ul>';
foreach ( $array as $key => $value ) {
    echo "<li><a href='#'>$value</a></li>";
    if ( 3 === $key % 4 ) {
        echo '</ul><ul>';
    }
}
echo '</ul>';

配列に 4 の倍数の項目がある場合、空の 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>";
}
于 2013-10-10T05:12:17.900 に答える
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;

http://3v4l.org/f6cAl

于 2013-10-10T05:17:49.990 に答える