这是世界上最简单的php如果声明曾经创建,我怎么也想不出怎么做,在一个。基本上我有一个难倒的时刻,需要社区的帮助。
这是我的功能:
protected function _traverse_options($name, $type = ''){
if(isset($this->_options[$name][$type])){
echo $this->_options[$name][$type];
}
}
我需要的if语句是检查三件事:
我尝试过:
if($type != '' && $type != 'before' || $type != '' && $type != 'after'){}
这怎么都行不通。
我知道这很简单,但我无法弄明白?应该||
是&&
??
答案 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)-10
或2*(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;
}