0

ループを使用してテーブルを作成しようとしています。列の数が重要です。行の数は関係ありませんが、6 ~ 7 にする必要があります。

ここでの問題は、テーブルを介して表示する必要がある一連の画像名を持つ 1 つの配列のみからこれを作成する必要があることです。

これはPHPです:

if ($mode == 'skins')
{
    $player_gender  = ($player_data['playerGender'] == true) ? 'male' : 'female';
    $skins_array    = $samp->skin('small', false, $player_gender);
    $index_counter  = 0;

    foreach ($skins_array as $skin_img)
    {
        $template->assign_block_vars('skinrow', array(
            'IMAGE_PATH'    => $root_path . $config['skins_path'] . '/Skin_' . $skin_img . '.png',
        ));
    }
}

これが HTML です。

<div class="container">
    <table>
        <!-- BEGIN skinrow -->
        <tr>
            <td><a href="{skinrow.IMAGE_PATH}"><img src="{skinrow.IMAGE_PATH}" /></a></td>
        </tr>
        <!-- END skinrow -->
    </table>
</div>

この場合に使用されるテンプレート エンジンは phpBB のものです。

HTML のループ内に を含めると<tr>、結果がすべて 1 つの列 (垂直方向) に表示され、ループから を除外すると<tr>、結果はすべて 1 行 (水平方向) に表示されます。

だから、私は基本的に列の数だけを気にします。それらを6〜7に制限したいと思います。

これを達成するためのロジックがわかりません。どんな助けでも感謝します。

以下は、私が使用しているデータの配列の例です: http://pastebin.com/uDMeBJw6

テンプレート エンジンが原因でコードの理解に問題がある場合は、お知らせください。純粋な PHP の例に変換します。

4

1 に答える 1

1

私のphpBBスキルは存在しませんが、おそらくこれでうまくいくでしょう:

テンプレート:

<div class="container">
    <table>
        <tr>
            <!-- BEGIN skinrow -->
                {skinrow.NEW_TR} <!-- **EDITED** -->
                <td><a href="{skinrow.IMAGE_PATH}"><img src="{skinrow.IMAGE_PATH}" />                   </a></td>
            <!-- END skinrow -->
        </tr>
    </table>
</div>

PHP (ループのみ):

$counter = 0;
foreach ($skins_array as $skin_img)
{
    $new_tr = ($counter && ($counter % 7 === 0)) ? '</tr><tr>' : ''; // **EDITED**
    $template->assign_block_vars('skinrow', array(
        'NEW_TR' => $new_tr, 
        'IMAGE_PATH'    => $root_path . $config['skins_path'] . '/Skin_' . $skin_img . '.png',
    ));
}

コードはテストされていません。これは単なるアイデアです。...そして、 and :)で踊る代わりに、
おそらくよりクリーンです。forforeach$counter

于 2013-10-27T14:31:27.127 に答える