Попытка установить переменную из функции и проверить, является ли она ложной в той же строке

0

Я пытаюсь установить переменную из функции, а затем проверить, является ли она ложной в той же строке. Если он неверен, я хочу выполнить некоторый код.

Код, который у меня есть, следующий:

  if ($wordid = wordnet_get_wordid_from_word($word) == FALSE) {
db_set_active();
    return $word;
  }

Однако, похоже, что $wordid не получает этого.

Я видел что-то подобное раньше, и я проверил это внутри функции, возвращаемое значение НЕ пусто.

Так что я делаю неправильно здесь? Невозможно ли установить переменную в той же строке, если вы проверяете, является ли она ложной?

  • 3
    Поставьте квадратные скобки вокруг задания, это поможет вам? ( ($wordid = wordnet_get_wordid_from_word($word)) == FALSE )
  • 0
    Да, это похоже на работу.
Теги:

2 ответа

0
Лучший ответ

$wordis устанавливается в этом коде. Если вы делаете echo gettype($wordis) по очереди, if вы найдете это логическое значение. Это значение будет результатом оценки этого: wordnet_get_wordid_from_word($word) == FALSE. Помните, что если это оценивает false оно все равно пропустит оператор if, вероятно, почему вы думаете, что он не работает.

Если вы хотите $wordid = wordnet_get_wordid_from_word($word) и проверить, что это false, используйте скобки:

if (($wordid = wordnet_get_wordid_from_word($word)) == FALSE) {..

ИМО, запутанный код. Отделите его.

  • 0
    И почему ОП должен ставить скобки вокруг назначения?
  • 0
    Он говорит парсеру сначала оценить часть в скобках. Таким образом, он назначит $wordid выводу функции wordnet_.. В противном случае он присваивает ему оценку wordnet_.. == FALSE
Показать ещё 3 комментария
0

Просто:

function test() {
    return false;
}

if( !$var = test() ) {
    echo "it false";
} else {
    echo "it true";
}

Выход: it false

Невозможно ли установить переменную в той же строке, если вы проверяете, является ли она ложной?

Вышеприведенное показывает, что это можно сделать.

Другой пример:

function hello() {
    return 'hello';
}

if( !$var = hello() ) {
    echo "it false" . PHP_EOL;
} else {
    echo "it true" . PHP_EOL;
}


var_dump( $var );

Выходы: it true string(5) "hello"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню