在php中,如果($x==1或2或3或4){do function}没有多次重复代码,如何说?

在php中,如果($x==1或2或3或4){do function}没有多次重复代码,如何说?,php,Php,我不擅长php,我需要一些帮助。我想说 if ($x == 1 or 2 or 3 or 4) {do function} 但我知道的唯一方法就是去 if (($x == '1') or ($x == '2')) or... 这似乎是一个很长的路要走。有没有更好的方法让我错过,比如 if ($x == 1,2,3,4) {do} 谢谢你的回答 您可以创建期望值的数组,然后使用_array()中的函数 或者您可以使用in_array()函数创建数组,例如$a=array(1,2,3,4)

我不擅长php,我需要一些帮助。我想说

if ($x == 1 or 2 or 3 or 4) {do function}
但我知道的唯一方法就是去

if (($x == '1') or ($x == '2')) or...
这似乎是一个很长的路要走。有没有更好的方法让我错过,比如

if ($x == 1,2,3,4) {do} 

谢谢你的回答

您可以创建期望值的数组,然后使用_array()中的函数

或者您可以使用
in_array()
函数创建数组,例如
$a=array(1,2,3,4)
然后执行
if(在数组中($x,$a))

如果您关心空间,也可以使用快捷方式:

if (in_array($x, array(1,2,3,4))) { /* do */ }
你可以使用这个函数


如果是一个范围,您可以:

if ($x >= 1 && $x <= 4) { }
如果($x>=1&&$x
以上所有想法都很好。我将展示另一种方法,这不是更好,而是不同的

您可以将比较存储在变量中,以便以后使用或合并。这有助于可读性,并使复杂的表达式易于创建和读取。它明显地消除了任何重复

$is_number = ($str=="one" or $str=="two" or $str=="tree");
$is_english = ($str=="one" or $str=="horse");
$is_french = ($str=="baguette" or $str=="amie");
$is_fun = $is_french or $is_english;

if($is_french and !$is_number){ ... } 

谢谢!这看起来像是代码最少的方法,我现在就试试!嵌套数组以提高速度----if(in_array($x,(array(1,2,3,4)){Hi-谢谢这一点-既有趣又有用。对于我当前的需要,它不如简单数组好,但我相信它会派上用场,所以我会在将来尝试它!
if ($x >= 1 && $x <= 4) { }
<?php
    $data = array(1,2,3,4);
    if(in_array($x, $data)){
        // execute function
    }  
?>
$is_number = ($str=="one" or $str=="two" or $str=="tree");
$is_english = ($str=="one" or $str=="horse");
$is_french = ($str=="baguette" or $str=="amie");
$is_fun = $is_french or $is_english;

if($is_french and !$is_number){ ... }