0

28個のタイトルの配列があり、配列を調べて、一度に2つのアイテム(タイトル)を次のhtmlに表示する必要があります。

<ul>
    //start loop here for all items in array
    <li>
        //display two titles in seperate divs
        <div class="item1">
            <h1>title[x]</h1>
        </div>
        <div class="item2">
            <h1>title[x]</h1>
        </div>
    </li>
    //repeat...
</ul>

したがって、基本的には次のように出力されます。

<ul>
    <li>
        <div>
            <h1>Title 1</h1>
        </div>
        <div>
            <h1>Title 2</h1>
        </div>
    </li>
    <li>
        <div>
            <h1>Title 3</h1>
        </div>
        <div>
            <h1>Title 4</h1>
        </div>
    </li>
    <li>
        <div>
            <h1>Title 5</h1>
        </div>
        <div>
            <h1>Title 6</h1>
        </div>
    </li>
    //etc..
</ul>

これは私がこれまでに試したことですが、明らかに両方のタイトルを複製しただけです。

<div id="work-list">

    <ul class="work-list-cat group">

    <?php if (!empty($this->intro_items)) { 

    foreach($this->intro_items as $id => $item) {
        $itemarray[] = $item;
    }

    $count = count($itemarray);

    $item = 1;

    for($y = 0; $y < $count; $y++) {
    ?>

    <li style="width:33.333333333333333333333333333333%; height:100%; float:left;">

        <?php 
                for($x=0; $x<$item; $x++){ ?>
                <div style="width:100%; height:50%; float:left; background-color:#333;">
                <?php echo $itemarray[$y]->title; ?>
                </div>
                <div style="width:100%; height:50%; float:left; background-color:#444;">
                <?php echo $itemarray[$y]->title; ?>
                </div>
            <?php   } ?>
    </li>

    <?php } ?>

    <?php } ?>

    </ul>

</div>  <?php //End of #work-list ?>
4

2 に答える 2

2

foreachああ、ループが機能していないので困惑していると思いますか?古き良きforループが便利で、一度に2ずつインデックスをインクリメントするのはこのようなときです。このようなものがあなたが探しているものかもしれません:

<ul>
    <?php for ($i = 0; $i < count($array); $i += 2) { ?>
    <li>
        //display two titles in seperate divs
        <div class="item1">
            <h1><? echo $array[$i]; ?></h1>
        </div>
        <div class="item2">
            <h1><? if ($i + 1 < count($array)) echo $array[$i + 1]; ?></h1>
        </div>
    </li>
    <? } ?>
</ul>

注:要素数が奇数の配列では機能しませんが、28あるので、問題にはなりません。編集:要素の数が奇数の場合、最後に空のdivとh1-tagを出力するだけです。

PS:あなたは本当に具体的な質問をしなかったので、私はあなたの問題を完全に誤解したかもしれません。これがあなたを助けないなら、問題を定式化する際にもう少し正確にしようとします。

于 2012-10-08T15:41:01.983 に答える
1

私は通常、そのような噛み砕かれたコードを提供しませんが、ここに行きます:

<ul>
<?php for($i=0;$i<28;$i+=2){
    echo '
    <li>
        <div class="item1">
            <h1>'.$title[$i].'</h1>
        </div>
        <div class="item2">
            <h1>'.$title[$i+1].'</h1>
        </div>
    </li>';
  } ?>
</ul>
于 2012-10-08T15:42:57.633 に答える