我使用多個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 } ?>
編輯:
其他說明
我已經試過包裝休息;在括號裏面,因爲我認爲跟着伯爵的那部分可能會弄亂某些東西。在結束之後,完全刪除計數器或添加一個分號符號也沒有幫助。
您是否嘗試過除了使用break語句另一種解決辦法?每當除了select-case塊之外的任何東西都看到break語句時,我會感到非常疲倦。 – steinmas
以下Dev的答案是正確的。我建議您對代碼進行乾淨而一致的格式化(特別是縮進塊)可以幫助您更快速地找到這些問題。例如,很少有任何充分的理由在一行上有多條語句。 – miken32
你也應該理解[alternative control structures](http://www.php.net/manual/en/control-structures.alternative-syntax.php)是如何在使用它們之前工作的。海事組織他們真的最好留給建立模板。 – miken32