我试过创建一个列表
<?php
$list=""
$list .='<h3><strong>'. $item->n_make.' - '.$item->n_model.'</strong></h3>
<p>'.$item->n_month.' - '.$item->n_year.'</p>
<p>'.$item->n_short_description.'</p>
<hr/>';
?>
<?php
echo $list;
?>
有了它,问题是只显示最后一个列表,并且不显示所有列表
然而 - 当我在没有定义列表变量的情况下使用它时
<?php
$list .='<h3><strong>'. $item->n_make.' - '.$item->n_model.'</strong></h3>
<p>'.$item->n_month.' - '.$item->n_year.'</p>
<p>'.$item->n_short_description.'</p>
<hr/>';
?>
<?php
echo $list;
?>
然后它正确显示所有列表,但它显示了php Not Undefined变量:list
可能是什么问题
被修改
完整代码
<?php foreach ($this->items as $i => $item) : ?>
<?php $canEdit = $user->authorise('core.edit', 'com_promo'); ?>
<?php if (isset($this->items[0]->state)) : ?>
<?php $class = ($canChange) ? 'active' : 'disabled'; ?>
<?php endif; ?>
<?php
$list.='<h3><strong>'. $item->n_make.' - '.$item->n_model.'</strong></h3>
<p>'.$item->n_month.' - '.$item->n_year.'</p>
<p>'.$item->n_short_description.'</p>
<p></p><hr/>';
?>
<?php endforeach; ?>
<?php if ($canCreate) : ?>
<a href="<?php echo JRoute::_('index.php?option=com_promo&task=detailform.edit&id=0', false, 2); ?>"
class="btn btn-success btn-small"><i
class="icon-plus"></i>
<?php echo JText::_('COM_PROMO_ADD_ITEM'); ?></a>
<?php endif; ?>
<input type="hidden" name="task" value=""/>
<input type="hidden" name="boxchecked" value="0"/>
<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>"/>
<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>"/>
<?php echo JHtml::_('form.token'); ?>
</form>
<?php
$listings = explode("<hr/>", $list);
$numberOfListings = count($listings);
$Reset =1;
for($i = 0; $i < $numberOfListings; ++$i)
{
if ($Reset == 7)
{ ?>
<div style="margin: 0 500px 5px 12px; float: left;">
</br></hr>
<img src="/templates/default/images/deal.jpg"/>
</div>
<hr />
<p></p>
<?php } if ($Reset == 12) { ?>
<div style="margin: 0 500px 5px 12px; float: left;">
</br></hr>
<img src="/templates/default/images/scheme.jpg"/>
</div>
<hr />
<p></p>
<?php }
echo $listings[$i] . "<hr/>";
if($Reset>15){
$Reset =1;
}
$Reset++;
}
?>
然而,当尝试将解决方案作为共享放入循环内部或外部时,它会显示另外两个没有任何列表显示的通知
Notice: Undefined variable: items
Warning: Invalid argument supplied for foreach() in
已修改的解决方案
<?php
$list="";
if(count($this->items) >0){
foreach($this->items as $newslist)
//$i=1;
{
$list .='<h3><strong>'.$newslist->n_make.' - '.$newslist->n_model.'</strong></h3>
<p>'.$newslist->n_month.' - '.$newslist->n_year.'</p>
<p>'.$newslist->n_short_description.'</p>
<p></p><hr/>';
//$i=$i+1;
}
}else{
$list='<div>There are no News.</div>';
}
?>
答案 0 :(得分:1)
你显然有一个循环,虽然你没有在这里显示。
如果你在该循环中定义$list
,它将在每次运行中重置,因此只会显示最后一次分配(你的最后一项)。
最简单的解决方案是将var定义放在循环之外。
<?php
$list=""
foreach($items as $item) {
$list .='<h3><strong>'. $item->n_make.' - '.$item->n_model.'</strong></h3>
<p>'.$item->n_month.' - '.$item->n_year.'</p>
<p>'.$item->n_short_description.'</p>
<hr/>';
}
echo $list;
?>
或者你可以检查$list
是否存在并在循环中保持定义:
<?php
foreach($items as $item) {
if(!isset($list)) {
$list="";
}
$list .='<h3><strong>'. $item->n_make.' - '.$item->n_model.'</strong></h3>
<p>'.$item->n_month.' - '.$item->n_year.'</p>
<p>'.$item->n_short_description.'</p>
<hr/>';
}
echo $list;
?>