更简单的方法来检查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} ?>