无法弄清楚如何创建这个if语句

时间:2013-03-27 20:49:09

标签: php if-statement

这是世界上最简单的php如果声明曾经创建,我怎么也想不出怎么做,在一个。基本上我有一个难倒的时刻,需要社区的帮助。

这是我的功能:

protected function _traverse_options($name, $type = ''){

    if(isset($this->_options[$name][$type])){
        echo $this->_options[$name][$type];
    }
}

我需要的if语句是检查三件事:

  • 如果type不为null 类型不是'之前'
  • 如果type不为null 类型不是'after'

我尝试过:

if($type != '' && $type != 'before' || $type != '' && $type != 'after'){}

这怎么都行不通。

我知道这很简单,但我无法弄明白?应该||&& ??

4 个答案:

答案 0 :(得分:0)

所有非空字符串既不是before也不是after

if ('' !== $type && !in_array($type, array('before', 'after')))
{

}

答案 1 :(得分:0)

这将完成工作:

if( $type != '' && $type != 'before' && $type != 'after'){}

答案 2 :(得分:0)

如果我理解正确,你就不需要在该陈述中使用OR。 试试:

if (!is_null($type) && strlen($type) > 0 && $type !== 'before' && $type !== 'after') { ... }

答案 3 :(得分:0)

使用括号,以便您可以看到属于什么的。

if ($type != null && ($type !== 'before' && $type !== 'after')) {
    // ...
}

如果你不小心,你可能会遇到问题,例如在数学中,根据你先做的操作,计算可以给出两种不同的结果。例如,2*5-10可以是0-10,具体取决于您乘以或减去的顺序:(2*5)-102*(5-10)

通过将逻辑分解为变量,您可以更容易理解,使if语句更简单:

$notNull = ($type != null);
$notBeforeAndAfter = ($type !== 'before' && $type !== 'after');
if ($notNull && $notBeforeAndAfter) {
    // ...
}

如果您确切知道$type变量必须包含的内容,那么您也可以使用switch语句。这更容易理解:

switch ($type) {
    case 'before':
        echo '$type is "before"';
        break;
    case 'after':
        echo '$type is "after"';
        break;
    // $type is not 'before' or 'after', which means that
    // it is something else which we cannot use...
    default:
        echo '$type is an unknown value. Error maybe?';
        break;
}