这个if语句有两个elseifs有什么问题?

时间:2011-08-07 09:57:13

标签: php if-statement

这是代码:

<?php if ( $current_language == es-ES ) : ?>
 <?php next_post_link( '%link', 'Proyecto Siguiente ' . _x( '', 'next post link', 'twentyten' ) . '' ); ?>
<?php elseif($current_language == zh-TW) : ?>
 <?php next_post_link( '%link', '下一個項目 ' . _x( '', 'next post link', 'twentyten' ) . '' ); ?>
<?php elseif($current_language == zh-CN) : ?>
 <?php next_post_link( '%link', '下一个项目 ' . _x( '', 'next post link', 'twentyten' ) . '' ); ?>
<?php else : ?>
 <?php next_post_link( '%link', 'Next Project ' . _x( '', 'next post link', 'twentyten' ) . '' ); ?>
<?php endif; ?>

出于某种原因,即使将lang设置为zh-TW(繁体中文),我仍然会得到'Proyecto Siguiente'。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您没有引用要比较的字符串,因此PHP将它们视为常量(不存在)。它仍然可以工作,因为PHP首先查找名为es-ES的常量,并将抛出级别为E_NOTICE(未定义常量)的错误。尝试:

if ( $current_language == 'es-ES' )

等等。

答案 1 :(得分:1)

$current_language是否与字符串对应?如果是这样,那么表达式的右侧需要引用,因为当前PHP认为它们是常量。 抛弃简写PHP也是一个好主意,但我不想开始争论。

<?php if ( $current_language == "es-ES" ){...

答案 2 :(得分:0)

为什么要使用所有这些php打开/关闭标签?你为什么不在字符串周围使用引号?无论如何,这是你的代码清理,它应该工作:

<?php
    if ( $current_language == 'es-ES' ) {
        next_post_link( '%link', 'Proyecto Siguiente ' . _x( '', 'next post link', 'twentyten' ) . '' );
    } elseif( $current_language == 'zh-TW' ) {
        next_post_link( '%link', '下一個項目 ' . _x( '', 'next post link', 'twentyten' ) . '' );
    } elseif( $current_language == 'zh-CN' ) {
        next_post_link( '%link', '下一个项目 ' . _x( '', 'next post link', 'twentyten' ) . '' );
    } else {
        next_post_link( '%link', 'Next Project ' . _x( '', 'next post link', 'twentyten' ) . '' );
    }
?>