我正在通过特定国家/地区的代码在我的网站上过滤一些内容,我正在尝试添加其他语句,因此除了我尝试的任何错误之外,它不必将每个部分作为单独的代码运行:
<?php if (function_exists('isCountryInFilter')) { ?>
<?php if(isCountryInFilter(array("us", "ca"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } ?>
<?php elseif(isCountryInFilter(array("au"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } ?>
<?php else(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }} ?>
上面给出了以下错误:Parse error: syntax error, unexpected T_ELSEIF in
并引用了第一个elseif
答案 0 :(得分:4)
当您将PHP与直接HTML / OUTPUT结合使用时。在代码中,您在结束括号和elseif关键字之间打印空格。
PHP的Interpreter直接在}后面查找elseif关键字,但它找到的是输出数据块,因此会引发错误。
<?php if (function_exists('isCountryInFilter')) { ?>
<?php if(isCountryInFilter(array("us", "ca"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } ?>
<!--PHP Finds space here which it does not expect.-->
<?php elseif(isCountryInFilter(array("au"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } ?>
<!--PHP Finds space here which it does not expect.-->
<?php elseif(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }} ?>
您需要做的是删除这样的空格。
<?php if (function_exists('isCountryInFilter')) { ?>
<?php if(isCountryInFilter(array("us", "ca"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }elseif(isCountryInFilter(array("au"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }else(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php}}?>
您会注意到PHP块外的空间不足。
这可以解决您的问题。
答案 1 :(得分:3)
否则无法评估条件,如果所有其他条件都为假,则会执行该条件,请根据开关的默认状态来考虑。
此:
<?php else(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }} ?>
需要这样:
<?php else if(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }} ?>
答案 2 :(得分:2)
而不是那种格式使用
<?php if($foo == 1): ?>
html code
<?php else if($foo == 2): ?>
other html
<?php else: ?>
more html code
<?php end; ?>
答案 3 :(得分:2)
甚至更好地在许多情况下使用开关盒。 例如:
switch($x) {
case 1:
?> some html <?php
break;
case 2:
?> more html <?php
break;
}
不是关闭标签,而是可以回显/打印html。
这将有效:
<?php if (function_exists('isCountryInFilter')) {
if(isCountryInFilter(array("us", "ca"))) {
?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } elseif(isCountryInFilter(array("au"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } elseif(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }
}
?>
答案 4 :(得分:1)
FrEaKmAn的答案可能会奏效,但我更喜欢花括号。尝试更改
<?php } ?>
<?php elseif(isCountryInFilter(array("au"))) { ?>
到
<?php } elseif(isCountryInFilter(array("au"))) { ?>
另外,一般情况下,最好尽量减少进入和退出php块的次数...
(一旦修好了这个部分,你就需要处理DamienL指出的问题。)