2016-08-14 51 views
-1

我曾嘗試創建一個列表在定義變量時,會顯示不完整的列表結果。但是沒有定義的變量時,則完整列表結果顯示

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

它的問題是僅顯示1最後上市,而不是所有目錄顯示

然而 - 當我使用它像這樣沒有定義的列表變量

<?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的通知:列表

可能是什麼問題

編輯

完整代碼

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

編輯解決方案

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

放'$名單= 「」'高於/(?而)循環之外你有。下次請撥打 – Jeff

+0

顯示所有相關代碼! – Jeff

+0

@ Jeff-粘貼的所有相關代碼 – Ruchika

回答

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; 
?> 
+0

P1請參閱 - 編輯的問題和所有相關的代碼粘貼,並根據建議的更改顯示更多通知 – Ruchika

+0

我剛剛猜到了'$ items',導致它之前沒有顯示。您必須將其替換爲您最初擁有的數組/對象。 – Jeff

+0

你好,你的意思是說你在第一個答覆中給出的代碼仍然是隻有$ items被某個數組/對象替換的解決方案,或者是不同的解決方案 – Ruchika