从“if”切换到“elseif”会破坏代码

I'm using multiple if statements to check a containing div, and output an image based on the container name. The code was working fine until I add a final "else" or change the if's out to elseif and I can't figure out why that's happening. When I try to add the else or elseif, the entire page fails to load. Any idea why this is happening?

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

EDIT:

Other notes

I've tried wrapping the break; in brackets because I thought that piece following the count might be messing with something. Also removing the counter altogether or adding a semi colon after the endforeach didn't help.

Whenever you close your PHP block, think about all the text/HTML outside it being put into PHP's echo function.

What gave me alarm bells was this part:

<?php } ?>

    <?php else { ?> ...

What that translates into is:

if (...) {

} echo "[whitespace]"; else {

}

which clearly makes your else block unexpected.

You should not close the PHP block between your closing if and opening else, i.e. do this instead:

...
} else { 
...