PHP elseif逻辑问题:name3和name4为空时Div样式未按预期显示
问题出在条件判断的顺序上!
嘿,你遇到的问题是因为条件判断的逻辑顺序搞反啦~
你看,你先写了:
if ($name3 == "" || $name4 == ""):
这个条件的意思是「name3为空 或者 name4为空」,这已经包含了「两个都为空」的情况(毕竟“两个都空”肯定满足“其中一个空”的条件)。所以当$name3和$name4都为空时,第一个if就直接触发了,永远轮不到后面的elseif ($name3 == "" && $name4 == "")分支。
修正方案:调整条件顺序
应该先判断「两个都为空」的情况,再判断「其中一个为空」的情况,这样逻辑才会正确执行:
<?php $name3 = get_field('name3', $post->ID); $name4 = get_field('name4', $post->ID); ?> <div class="col-lg-3"> <!-- name1 exists --> </div> <?php if ($name3 == "" && $name4 == ""): ?> <div class="col-lg-6"> <?php elseif ($name3 == "" || $name4 == ""): ?> <div class="col-lg-4"> <?php else: ?> <!-- 两个都有内容时的代码 --> <?php endif; ?>
额外优化:用empty()更健壮
另外,get_field()有时候可能返回null而不是空字符串,用empty()函数判断会更准确,它能处理空字符串、null、0、false等“空值”情况:
<?php $name3 = get_field('name3', $post->ID); $name4 = get_field('name4', $post->ID); ?> <div class="col-lg-3"> <!-- name1 exists --> </div> <?php if (empty($name3) && empty($name4)): ?> <div class="col-lg-6"> <?php elseif (empty($name3) || empty($name4)): ?> <div class="col-lg-4"> <?php else: ?> <!-- 两个都有内容时的代码 --> <?php endif; ?>
这样调整后,当两个都为空时就会正确应用col-lg-6类啦~
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

