一次迭代2个模型的数组


Iterate array for 2 model at once

我在页面上有一个列表视图设计,我想一次打印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从dataProvider获取model,并一次显示一个,我现在正在使用以下代码

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

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

如果数组为奇数,我如何在循环中管理这一点???

您可以使用以下内容:

<?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>