Я пытаюсь установить переменную из функции, а затем проверить, является ли она ложной в той же строке. Если он неверен, я хочу выполнить некоторый код.
Код, который у меня есть, следующий:
if ($wordid = wordnet_get_wordid_from_word($word) == FALSE) {
db_set_active();
return $word;
}
Однако, похоже, что $wordid
не получает этого.
Я видел что-то подобное раньше, и я проверил это внутри функции, возвращаемое значение НЕ пусто.
Так что я делаю неправильно здесь? Невозможно ли установить переменную в той же строке, если вы проверяете, является ли она ложной?
$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) {..
ИМО, запутанный код. Отделите его.
$wordid
выводу функции wordnet_..
В противном случае он присваивает ему оценку wordnet_.. == FALSE
Просто:
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"
($wordid = wordnet_get_wordid_from_word($word)) == FALSE
)