Ich brauche etwas Hilfe mit der unten alternativen if-else-Syntax. Ich benutze dies sehr häufig und es funktioniert mit einer Erfolgsquote von 99,999999%. Hier , aus irgendeinem Grund, es nicht:PHP wenn ... sonst alternative Syntax werfen "unerwartet": 'in ... "Fehlermeldung
if (get_row_layout() == 'spacer') :
$spaceheight = get_sub_field('spacer_height');
// The Alternative Syntax: if... else statement without a colon
// Once these two lines are removed OR changed into "if (some
// condition) : some stuff; endif;" syntax >> the error goes
// away.
if ($spaceheight && (0 !== $spaceheight))
echo "<div class='basf-spacer' style='display: block; width: 100%; height: {$spaceheight}px; background: transparent; padding: 0; margin: 0; font-size: 0; line-height: 0;'></div>";
elseif (get_row_layout() == 'terms') :
// Some other stuff
endif;
Die spezifische Fehlermeldung lautet: "Parse error: syntax error, unerwartet ':' in ..."; und der Doppelpunkt ist nach der alternativen Syntax in der Zeile elseif (get_row_layout() == 'terms') :
unerwartet.
Irgendeine Idee, was hier passiert?
@antoni vorgeschlagen die Antwort ist, dass alternative Syntaxen nicht gemischt werden können. Aber in diesem Fall, warum funktionierts ?:
if ($terms_primcont || $terms_seccont) : ?>
<div class="terms__body-wrap">
<?php
if ($terms_primcont) echo "<div class='terms__primary'>{$terms_primcont}</div>";
if ($terms_seccont) echo "<div class='terms__secondary'>{$terms_seccont}</div>";
?>
</div>
<?php endif;
Ich würde gerne denken, das ist die richtige Antwort - aber es gibt einen anderen ähnlichen Code-Teil, wo ich die gleiche Mischung verwenden (siehe Frage Update), immer noch es funktioniert gut. Der einzige Unterschied ist ein öffnendes und schließendes HTML-div-Tag. –
Dank @antoni - akzeptiert als die richtige Antwort. Also zusammengefasst: es ist speziell das elseif, das nicht gut mit gemischten Syntaxen spielt. Seltsames Zeug, das ist sicher !! –