PHP, если не пустая строка и либо string = "this", либо "that", как это сделать? - PullRequest
0 голосов
/ 29 января 2012
<code>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 "
"; } эхо-тест ();

это моя попытка, и у меня болит голова, теперь выдает ответное сообщение, и я не знаю почему

Ответы [ 3 ]

5 голосов
/ 29 января 2012

!($var == 'something') будет таким же, как ($var != 'something').

Выполнение (!$var == 'something') выполнит логическую операцию с $ var перед выполнением сравнения.! $ var вернет false, если $ var не будет пустым, поэтому в сущности он будет говорить (false == 'что-то'), что будет false.

3 голосов
/ 29 января 2012

Ваша плохая логика здесь:

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

если $embedmode равно 'normal', то $embedmode != 'popup', поэтому весь этот бит равен TRUE. Я верю, что вы хотите заменить || с &&.

Для кода, который легче рассуждать, я бы, вероятно, использовал in_array или switch, например:

switch ($embedmode) {
  case 'normal':
  case 'popup':
  case 'special':
    // valid, proceed
    break;
  case '':
    $embedmode = 'default';
    break;
  default:
    trigger_error ("Embed mode '$embedmode' not valid.");
    break;
}
2 голосов
/ 29 января 2012

1) $var != 'something' говорит: "$ var - это НЕ 'что-то'".

2) !$var == 'something' говорит: «ОТРИЦАНИЕ $ var - это нечто».

Выражения означают разные вещи. Проверьте это, сказав, что $ var is 'foobar', ваши два предложения:

1) «foobar» НЕ является «чем-то», а

2) ПЕРЕГОВОРЫ «ФУБАРА» - это «нечто»

Как видите, 1) вернет true, а 2) вернет false, потому что отрицание того, что есть «foobar», все равно не равно «нечто».

...