Сборка HTML в цикле - PullRequest
       5

Сборка HTML в цикле

2 голосов
/ 11 октября 2011

Я пытаюсь перебрать массив в PHP и в то же время создать HTML-код для вывода.

При первом запуске цикла мне нужно вывести <li class="row"> Затем мне нужно добавить 3 divs, затем закройте <li> и запустите процесс снова.

Я пробовал это,

<?php $count = 1; ?>
        <?php foreach ($results as $k => $v) : ?>
            <?php echo $count % 3; ?>
            <?php if ($count % 3 == 0) : ?>
            <li class="row">
            <?php endif; ?>
                <div class="grid_8">
                    <div class="candidate">
                        <div class="model_image shadow_50"></div>
                        <dl>
                            <dt><?php echo $v['first_name']; ?> <?php echo $v['surname']; ?></dt>
                            <dd>
                                <?php echo $v['talent']; ?>
                                <ul>
                                    <li><?php echo anchor("/candidates/card/" . strtolower($v['first_name']) . "-" . strtolower($v['surname']), "View Details", array('class' => 'details')); ?></li>
                                    <li><?php echo anchor("/candidates/card/" . strtolower($v['first_name']) . "-" . strtolower($v['surname']), "View Showreel", array('class' => 'showreel')); ?></li>
                                    <li><?php echo anchor("/candidates/card/" . strtolower($v['first_name']) . "-" . strtolower($v['surname']), "Shortlist", array('class' => 'shortlist')); ?></li>
                                </ul>
                            </dd>
                        </dl>
                    </div>
                </div>
            <?php if ($count % 3 == 0) : ?>
            </li>
            <?php endif; ?>
            <?php $count ++; ?>
            <?php if($count >= 3) $count = 1; ?>
        <?php endforeach; ?>

, однако все мои li получают строку класса.

Желаемый вывод:

<li class="row">
            <div class="grid_8">
                <div class="candidate">
                    <div class="model_image shadow_50"></div>
                    <dl>
                        <dt>Jessica Womersley</dt>
                        <dd>
                            actress &amp; presenter
                            <ul>
                                <li><a href="" class="details">View Details</a></li>
                                <li><a href="" class="showreel">Showreel</a></li>
                                <li><a href="" class="shortlist">Shortlist</a></li>
                            </ul>
                        </dd>
                    </dl>
                </div>
            </div>
            <div class="grid_8">
                <div class="candidate">
                    <div class="model_image shadow_50"></div>
                    <dl>
                        <dt>Jessica Womersley</dt>
                        <dd>
                            actress &amp; presenter
                            <ul>
                                <li><a href="" class="details">View Details</a></li>
                                <li><a href="" class="showreel">Showreel</a></li>
                                <li><a href="" class="shortlist">Shortlist</a></li>
                            </ul>
                        </dd>
                    </dl>
                </div>
            </div>
            <div class="grid_8">
                <div class="candidate end">
                    <div class="model_image shadow_50"><span class="banner"></span></div>
                    <dl>
                        <dt>Jessica Womersley</dt>
                        <dd>
                            actress &amp; presenter
                            <ul>
                                <li><a href="" class="details">View Details</a></li>
                                <li><a href="" class="showreel">Showreel</a></li>
                                <li><a href="" class="shortlist">Shortlist</a></li>
                            </ul>
                        </dd>
                    </dl>
                </div>
            </div>
        </li>

1 Ответ

1 голос
/ 11 октября 2011

Вы слишком усложняете вещи. ¿Почему бы просто не использовать цикл for внутри каждого? Как это

    <?php foreach ($results as $k => $v) : ?>
        <li class="row">
        <?php for($count = 1; $count <= 3; $count++) : ?>

            <div class="grid_8">
                <div class="<?php if($count == 3) echo "candidate_end"; else echo "candidate";?>">
                    <div class="model_image shadow_50"></div>
                    <dl>
                        <dt><?php echo $v['first_name']; ?> <?php echo $v['surname']; ?></dt>
                        <dd>
                            <?php echo $v['talent']; ?>
                            <ul>
                                <li><?php echo anchor("/candidates/card/" . strtolower($v['first_name']) . "-" . strtolower($v['surname']), "View Details", array('class' => 'details')); ?></li>
                                <li><?php echo anchor("/candidates/card/" . strtolower($v['first_name']) . "-" . strtolower($v['surname']), "View Showreel", array('class' => 'showreel')); ?></li>
                                <li><?php echo anchor("/candidates/card/" . strtolower($v['first_name']) . "-" . strtolower($v['surname']), "Shortlist", array('class' => 'shortlist')); ?></li>
                            </ul>
                        </dd>
                    </dl>
                </div>
            </div>
        <?php endfor; ?>
        </li>
    <?php endforeach; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...