$ var == false не працює

У мене є вираз, подібний до цього, у якому значення $ var є помилковим:

    if (! isset($var) || (isset($var) && $var == false)) {
          //This should be executed
    }
    else if (isset($var) && $var == true) {
          //This is executed
    }

Я хочу, щоб перший вираз був виконаний. Що неправильно в коді вище? Будь ласка, допоможіть мені

Висновок var_dump ($ dump):

    string 'false' (length=5)
0
Що було присвоєно $ var?
додано Автор Vivek Sadh, джерело
@Bondye $ var є змінною GET http://stackoverflow.com/a/17268813/1057527
додано Автор machineaddict, джерело
як щодо цього kunststube.net/isset
додано Автор M Khalid Junaid, джерело
Чому ваш логічний false є рядком 'false' ?
додано Автор Ron van der Heijden, джерело
$ var є помилковим ..
додано Автор khushalbokadey, джерело

8 Відповіді

Ви можете просто написати логіку, як показано нижче:

if (isset($var) && $var) {
  //Do other thing
} else {
  //Do something
}
2
додано
+1. Найбільш читабельний з усіх варіантів.
додано Автор devnull, джерело
@khushalbokadey Вибачте, але код ніколи не лежить, покажіть результат var_dump ($ var)
додано Автор xdazz, джерело
Я спробував, але якщо $ var є помилковим, то він надходить у блок if.
додано Автор khushalbokadey, джерело
@xdazz: Відредаговано запит o/p
додано Автор khushalbokadey, джерело
@xdazz: Я зрозумів. Дякую.. :)
додано Автор khushalbokadey, джерело

Ви відповіли на власну проблему з var_dump ()

string 'false' (length=5)

Ви намагаєтеся порівняти рядок з логічним. Спробуйте:

$var === 'false'
2
додано

Я думаю, що те, що ви намагаєтеся зробити з цим

if (! isset($var) || (isset($var) && $var == false))

is exactly the definition of the empty function (or it's negation in fact). See the man page here http://php.net/empty

1
додано

Значення "false" надходить від отримання запиту, і я повинен був зробити так:

    if (! isset($var) || ( isset($var) && $var == 'false' ))

Дякуємо за відповіді.

1
додано

Спробуйте як

if ( !isset($var) || ( isset($var) && !$var )) {
      //Do something
}
else if ( isset($var) && $var ) {
      //Do other thing
}

Or simply Спробуйте як

if ( !isset($var) || ( !$var )) {
0
додано
Я думаю, ISSET поверне false для $ var = false
додано Автор Gautam3164, джерело
Див. Також мої редаговані ans ...
додано Автор Gautam3164, джерело
все ще не працює
додано Автор khushalbokadey, джерело

Якщо ви використовуєте codeigniter, а значення $ var надходить із запиту get, то вам не потрібно вводити такий довгий вираз. Це також працюватиме.

if( !$this->input->get('get_variable_name') ) {
//Do something
} else {
//Do other thing
}

Isset річ робиться codeigniter себе. Для отримання додаткової інформації відвідайте посилання нижче.

http://ellislab.com/codeigniter/user-guide/libraries/input.html

0
додано

Зверніть увагу на відповідь @Nathan Bishop.

if( empty($var) ) {
    //$var is false
} else {
   //$var exists and is true
}

Визначити, чи вважається, що змінна порожньою. Змінна вважається порожньою, якщо вона не існує або якщо її значення дорівнює FALSE. empty() не генерує попередження, якщо змінна не існує.    Джерело PHP.net

якщо ви хочете грати з істинним помилковим значенням у ваших запитах URL, зробіть це з "1" для true і "0" для false

Такі значення вважаються FALSE:

  • логічне значення FALSE
  • ціле число 0 (нуль)
  • float 0.0 (нуль)
  • порожній рядок і рядок "0"
  • масив з нульовими елементами
  • об'єкт з нульовими змінними-членами (лише для PHP 4)
  • спеціальний тип NULL (включаючи змінні unset)
0
додано
if (! isset($var) || (isset($var) && $var == 'false')) {
           echo 'false';
    }
    else if ((isset($var)) && ($var == 'true')) {
           echo 'true';
    }

використовувати цей код. якщо будь-яке значення присвоюється змінної, то воно буде вважатися істинним у булевих виразах.

0
додано
додано Автор machineaddict, джерело
@machineaddict Я виправив свою відповідь. ($ var == false) буде оцінювати true Тільки коли $ var є порожнім рядком або не встановлено.
додано Автор Prem Shankar, джерело
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php