我试着创建一个列表
<?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未定义变量的通知: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++;
}
?>
然而,当尝试将解决方案作为共享放置在循环内部或外部时,它会显示2个通知而没有任何列表显示
Notice: Undefined variable: items
Warning: Invalid argument supplied for foreach() in
<<p> 编辑解决方案/strong> <?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>';
}
?>
显然这里有一个循环,尽管这里没有显示。
如果你在循环中定义了$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;
?>