0

我正在尝试使用循环创建表。列数很重要,应该是6-7,而行数无关紧要。

这里的问题是我只需要从一个数组创建它,它有一组我需要通过表格显示的图像名称。

这是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。

如果我<tr>在 HTML 的循环中包含 ,我的结果将全部下降(垂直)在一列中,当我<tr>从循环中排除时,结果全部放在一行中(水平)。

所以,我基本上只关心列数,我希望那些限制在 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',
    ));
}

代码未经测试,这只是一个想法。
...而且它可能更干净,for而不是与foreachand共舞$counter:)

于 2013-10-27T14:31:27.127 回答