2014-02-18 80 views
0

我使用多個if語句來檢查包含div,並根據容器名稱輸出圖像。代碼工作正常,直到我添加了最後的「else」或者將if更改爲elseif,並且我無法弄清楚爲什麼會發生這種情況。當我嘗試添加else或elseif時,整個頁面無法加載。任何想法爲什麼發生這種情況?從「if」切換到「elseif」中斷代碼

  <?php 
      if($viewMore['container_type'] == 'Large IMG' || $viewMore['container_type'] == 'Gallery') { 
       $photoSql = "SELECT * FROM `cms_uploads` WHERE (`tableName`='site_content' AND `recordNum` = '".$viewMore['num']."' AND `fieldname`= 'large_images') ORDER BY `order`"; 
       $photoResult = $database->query($photoSql); 
       $photoResultNum = $database->num_rows($photoResult); 

       $photoArray = array(); 
       while($photoResultRow = $database->fetch_array($photoResult)) { 
        array_push($photoArray, $photoResultRow); 
       } 

       $large = 0; foreach ($photoArray as $photo => $upload): if (++$large == 2) break; 
      ?> 

       <img class="features" src="<?php echo $upload['urlPath'] ?>"> 

      <?php endforeach ?> 
      <?php } ?> 

      <?php 
      elseif($viewMore['container_type'] == 'Medium IMG') { 
       $photoSql = "SELECT * FROM `cms_uploads` WHERE (`tableName`='site_content' AND `recordNum` = '".$viewMore['num']."' AND `fieldname`= 'small_images') ORDER BY `order`"; 
       $photoResult = $database->query($photoSql); 
       $photoResultNum = $database->num_rows($photoResult); 

       $photoArray = array(); 
       while($photoResultRow = $database->fetch_array($photoResult)) { 
        array_push($photoArray, $photoResultRow); 
       } 

       $medium = 0; foreach ($photoArray as $photo => $upload): if (++$medium == 2) break; 
      ?> 

       <img class="features" src="<?php echo $upload['urlPath'] ?>"> 

      <?php endforeach; ?> 
      <?php } ?> 

         <?php else { ?> SOMETHING HERE <?php } ?> 

編輯:

其他說明

我已經試過包裝休息;在括號裏面,因爲我認爲跟着伯爵的那部分可能會弄亂某些東西。在結束之後,完全刪除計數器或添加一個分號符號也沒有幫助。

+0

您是否嘗試過除了使用break語句另一種解決辦法?每當除了select-case塊之外的任何東西都看到break語句時,我會感到非常疲倦。 – steinmas

+0

以下Dev的答案是正確的。我建議您對代碼進行乾淨而一致的格式化(特別是縮進塊)可以幫助您更快速地找到這些問題。例如,很少有任何充分的理由在一行上有多條語句。 – miken32

+0

你也應該理解[alternative control structures](http://www.php.net/manual/en/control-structures.alternative-syntax.php)是如何在使用它們之前工作的。海事組織他們真的最好留給建立模板。 – miken32

回答

2

當你閉上你的PHP代碼塊,想想所有的文本/ HTML外面被放進PHP的回聲功能。

什麼給我敲響了警鐘是這一部分:

<?php } ?> 

    <?php else { ?> ... 

這也就轉化爲爲:

if (...) { 

} echo "[whitespace]"; else { 

} 

這顯然會讓您else塊意外。

你不應該關閉關閉之間的PHP塊,如果開放一樣,即做到這一點,而不是:

... 
} else { 
... 
+0

謝謝!我沒有意識到正在增加空白空間 – user2989731

+0

沒問題,祝你好運! –