一次迭代2个模型的数组

时间:2015-11-10 23:12:41

标签: php arrays yii

我在页面上有一个listview设计,我希望一次打印2个models的值。简而言之,它应该是这样的

<ul>
   <li>
       <div>
        <img src="<?= $model->image ?>" />
        <a href="#"><?= $model->title ?> </a>
       </div> 
       <div>
        <img src="<?= $model->image ?>" />
        <a href="#"><?= $model->title ?> </a>
       </div>
  </li>
</ul>

但我不知道应该使用哪个循环?截至目前,我正在使用foreach从model获取dataProvider并一次显示一个,我现在正在使用下面的代码

<ul>
   <?php foreach($dataProvider2->getData() as $record) { ?>
    <li>
       <img src="<?= $model->image ?>" />
       <a href="#"><?= $model->title ?> </a>
    </li>
   <?php } ?>
</ul>

我想在一个<li>中显示2个项目,这里的问题是dataProvider可能会产生奇数或偶数的结果。

如何在循环中管理,如果数组是奇数而不是只打印最后一个循环中的一个项???

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

<?php
$data = $dataProvider->getData();
?>
<ul>
   <?php for($i = 0; $i <= count($data) - 1; $i++) : ?>
    <li>
        <div>
            <a href="#"><?php echo $data[$i]->id ?> </a>
        </div>

        <?php
        if ($i < (count($data) - 1) ) : ?>
        <div>
            <a href="#"><?php echo $data[$i + 1]->id; ?> </a>
        </div>
        <?php endif; ?>

    </li>
    <?php $i++; ?>
   <?php endfor; ?>
</ul>

结果:

<ul>
    <li>
        <div>
            <a href="#">1 </a>
        </div>

        <div>
           <a href="#">2 </a>
        </div>

    </li>
    <li>
        <div>
            <a href="#">3 </a>
        </div>

        <div>
            <a href="#">4 </a>
        </div>
        </li>
    <li>
        <div>
            <a href="#">5 </a>
        </div>

        <div>
            <a href="#">6 </a>
        </div>
    </li>
    <li>
        <div>
            <a href="#">7 </a>
        </div>

        <div>
            <a href="#">8 </a>
        </div>
    </li>
    <li>
        <div>
            <a href="#">9 </a>
        </div>
        <div>
            <a href="#">10 </a>
        </div>
    </li>
</ul>