PHP如果不是空字符串,并且字符串=“这个”或“那个”如何做到这一点


PHP if not empty string and either string = "this" or "that" how to do that?

function test(){
$embedmode = 'normal';
if ( ( $embedmode != '' ) && ( $embedmode != 'normal' || $embedmode != 'popup' || $embedmode != 'popup' ) )
    return "<p>ARVE Error: mode is not set to 'normal', 'popup' or 'special' maybe typo</p>";
elseif ( $embedmode == '')
    $mode = 'default';
else
    $mode = $embedmode;
echo '<pre>';
var_dump($mode);
echo "</pre>";
}
echo test();

这是我的尝试,我现在很头疼,它发出了返回消息,我不知道为什么

!($var == 'something')($var != 'something')相同。

执行(!$var == 'something')将在进行比较之前对$var执行布尔运算。 !$var 将返回 false,除非$var为空,所以它本质上是在说 (false == 'something'(,这将是假的。

你的糟糕逻辑在这里:

( $embedmode != 'normal' || $embedmode != 'popup' || $embedmode != 'popup' )

如果$embedmode等于 'normal' ,则$embedmode != 'popup' ,所以这整个位都是 TRUE。我相信你想替换 ||与 &&.

对于更容易推理的代码,我可能会使用 in_arrayswitch ,如下所示:

switch ($embedmode) {
  case 'normal':
  case 'popup':
  case 'special':
    // valid, proceed
    break;
  case '':
    $embedmode = 'default';
    break;
  default:
    trigger_error ("Embed mode '$embedmode' not valid.");
    break;
}

1($var != 'something'说"$var不是'某物'"。

2(!$var == 'something'说"对$var的否定是'某物'"。

这些表达意味着不同的东西。用说$var是"foobar"来测试它,你的两句话是:

1("foobar"不是"某物",并且

2(对"福巴"的否定是"某物">

如您所见,1(将返回true,但2(将返回false,因为对"foobar"的否定仍然不等于"某物"。

相关文章: