更简单的方法来检查variables是否不等于多个string值?

现行法规:

<?php // See the AND operator; How do I simplify/shorten this line? if( $some_variable !== 'uk' && $some_variable !== 'in' ) { // Do something } ?> 

和:

 <?php // See the OR operator; How do I simplify/shorten this line? if( $some_variable !== 'uk' || $some_variable !== 'in' ) { // Do something else } ?> 

有没有更简单的(即更短)的方式来写这两个条件?

注:是的,他们是不同的,我期待着不同的方式来缩短代码。

对于你的第一个代码,你可以使用in_array() @ShankarDamodaran给出的答案进行简短的修改:

 if ( !in_array($some_variable, array('uk','in'), true ) ) { 

是相同的:

 if ( $some_variable !== 'uk' && $some_variable !== 'in' ) { 

…但更短。 特别是如果你不仅比较“英国”和“英寸”。 我不使用额外的variables( Shankar使用$ os ),而是在if语句中定义数组。 有些人可能会觉得很脏,我觉得它很快,很整齐:D

你的第二个代码的问题是,它可以很容易地与TRUE交换,因为:

 if (true) { 

等于

 if ( $some_variable !== 'uk' || $some_variable !== 'in' ) { 

你在问一个string的值是不是A还是不是B,如果是A,那肯定不是B,如果是B,那肯定不是A,如果是C或者字面意思是别的,也不是A而不是B,所以这个陈述总是( 不考虑这里的薛定谔定律 )是正确的。

你可以在PHP中使用in_array()

 $os = array("uk", "us"); // You can set multiple check conditions here if (in_array("uk", $os)) //Founds a match ! { echo "Got you"; } 

如果你打算在if语句中构build一个函数,我还build议使用in_array。 这是一个更清洁。

如果你试图给variables赋值,你可以使用if / else速记:

 $variable_to_fill = $some_variable !== 'uk' ? false : true; 

你需要多值检查。 尝试使用以下代码:

 <?php $illstack=array(...............); $val=array('uk','bn','in'); if(count(array_intersect($illstack,$val))===count($val)){ // all of $val is in $illstack} ?>