WordPress中多条件OR逻辑的IF语句无法正常工作
问题分析与解决方案
嘿,我来帮你搞定这个问题!你现在页面输出Game title: 1,核心问题出在赋值运算符和逻辑或的优先级,以及你想要的“选第一个有值的字段”和当前代码逻辑不匹配上。
为什么会输出1?
你原来的代码里:
if( $info = get_field('pcgame_name') || get_field('psppublisher') || get_field('ps3game_name') )
因为||的优先级比=高,这段代码实际执行的是:
$info = (get_field('pcgame_name') || get_field('psppublisher') || get_field('ps3game_name'));
也就是把三个字段的逻辑或结果(布尔值true)赋值给$info,而PHP中输出布尔值true的时候会自动转为字符串1,这就是你看到的结果。
正确的实现方式
你的需求是“三个字段里选第一个有值的输出”,给你两种靠谱的写法:
写法一:分步条件判断(兼容性好,适合所有PHP版本)
<strong>Game Title: </strong> <?php // 依次检查每个字段,第一个有值的就输出 if ($gameTitle = get_field('pcgame_name')) { echo $gameTitle; } elseif ($gameTitle = get_field('psppublisher')) { echo $gameTitle; } elseif ($gameTitle = get_field('ps3game_name')) { echo $gameTitle; } ?>
写法二:用null合并运算符(PHP7+ 更简洁)
如果你的PHP版本是7.0及以上,可以用??运算符直接取第一个非null的字段值,代码更清爽:
<strong>Game Title: </strong> <?php echo get_field('pcgame_name') ?? get_field('psppublisher') ?? get_field('ps3game_name'); ?>
这两种写法都能帮你实现“从三个字段里选第一个有值的输出”的需求,不会再出现输出1的问题啦~
内容的提问来源于stack exchange,提问作者niznet
相关产品推荐
相关产品推荐

