PHP:简化多个||运营商声明合二为一?

时间:2012-05-29 01:01:24

标签: php operators

  

可能重复:
  php if statement with multiple conditions

我有这段代码:

if(x==1 || x==2 || x==3 || x==4 )

反正只是缩短了吗?例如:

if(x==1||2||3||4 )

如果X = 1,2,3或4?

,则语句的含义为真

提前谢谢。

编辑(感谢所有回复,这里有一些澄清)

我有一个while循环但只想要调用特定的数据库条目。我的代码是最新的

<?php while(the_repeater_field('team_members','options') && get_sub_field('member_sort') == 1 : ?>
 <div class="one_fourth">
        <img src="<?php the_sub_field('image'); ?>" alt="" />
        <p>
          <?php the_sub_field('info'); ?>
            <br />
            <a href="mailto:<?php the_sub_field('email'); ?>"><?php the_sub_field('email'); ?></a>
        </p>
 </div>
<?php endwhile; ?>

现在它与== 1完美配合,但我也希望显示2,3,4。我只是不确定我应该如何执行代码来执行1 || 2 || 3 || 4

更新2:

好的,所以我使用了以下代码,但我猜我的方法是错误的。下面的代码只显示了等于1的记录..但不是等于2,3,4的记录...我猜是因为while循环只运行一次,因为语句立即变为真。

  <?php while(the_repeater_field('team_members','options') && in_array(get_sub_field('member_sort'),array(1,2,3,4))): ?>
                        <div class="one_fourth">
                            <img src="<?php the_sub_field('image'); ?>" alt="" />
                            <p>
                                <?php the_sub_field('info'); ?>
                                <br />
                                <a href="mailto:<?php the_sub_field('email'); ?>"><?php the_sub_field('email'); ?></a>
                            </p>
                        </div>
                    <?php endwhile; ?>

4 个答案:

答案 0 :(得分:5)

if (in_array($x, array(1,2,3,4))

或者,甚至:

if (in_array($x, range(1, 4)))

好的,这个问题已经发展了很多,但我认为现在的问题是你想要遍历所有的值,但只在某些条件下做事。您可以使用continue语句中止当前迭代并立即转到下一个迭代。

<?php while (the_repeater_field('team_members','options')) : ?>
    <?php if (!in_array(get_sub_field('member_sort'), array(1,2,3,4))) continue; ?>

    ... do stuff

 <?php endwhile; ?>

答案 1 :(得分:1)

这取决于你有多少,以及是否有其他条件,但是switch

switch(x) {
    case 1:
    case 2:
    case 3:
    case 4:
        break;
    default:
        // Do stuff
}

或数组,特别是对于许多项目:

if(!in_array(x, array(1, 2, 3, 4)) {
    // Do stuff
}

答案 2 :(得分:1)

如果您使用的是PHP 5.4+,则可以这样做:

if (in_array($x, [1,2,3,4]))

否则,它是:

if (in_array($x, array(1,2,3,4)))

答案 3 :(得分:0)

没有办法。只能使用数组。