$ Вар == мана не працуе

У мяне ёсць выраз, як гэта, у якім значэнне $ вару з'яўляецца ілжывым:

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

Я хачу, каб першае выраз, якое будзе выканана. Што дрэннага ў кодзе вышэй? Калі ласка, дапамажыце мне

Выснову var_dump ($ звалка):

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

8 адказы

Вы маглі б проста напісаць логіку, як паказана ніжэй:

if (isset($var) && $var) {
  //Do other thing
} else {
  //Do something
}
2
дададзена
+1. Найбольш чытаныя з усіх варыянтаў.
дададзена аўтар devnull, крыніца
@khushalbokadey Выбачайце, але код ніколі не хлусяць, паказваюць вынік var_dump ($ Var)
дададзена аўтар xdazz, крыніца
Я спрабаваў, але калі $ вар ілжыва, то ён уваходзіць у блок, калі.
дададзена аўтар khushalbokadey, крыніца
@xdazz: Пад рэдакцыяй о/р у пытанні
дададзена аўтар 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
дададзена

Значэнне ілжывых зыходзіць з запыту GET і я павінен быў зрабіць так:

    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
дададзена
Я думаю, што Исеть верне хлусню за $ Var = хлусня
дададзена аўтар Gautam3164, крыніца
См адрэдагаваныя анс таксама ...
дададзена аўтар Gautam3164, крыніца
да гэтага часу не працуе
дададзена аўтар khushalbokadey, крыніца

Калі вы выкарыстоўваеце CodeIgniter і значэнне $ вар зыходзіць з запыту GET, то вам не трэба ўводзіць такое доўгае выраз. Гэта таксама будзе працаваць.

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

Исеть справа зроблена самім CodeIgniter. Для атрымання дадатковай інфармацыі перайдзіце па спасылцы ніжэй.

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

0
дададзена

Звярніце ўвагу на адказ @ Натан Бішоп.

if( empty($var) ) {
    //$var is false
} else {
   //$var exists and is true
}
<�Р> Вызначыць, ці лічыцца пераменная быць пустым. Пераменная лічыцца пустым, калі яна не існуе, або калі яго значэнне роўна FALSE. пусты() не генеруе папярэджанне, калі зменная не існуе.    Крыніца PHP.net

калі вы жадаеце гуляць з сапраўдным фальшывага значэння ў Ваш URL запытаў зрабіць гэта з «1» для сапраўднага і «0» для хлусні

Наступныя значэнні лічацца FALSE:

  • само лагічнае значэнне FALSE
  • <�Літый> цэлы лік 0 (нуль) </літый> <�Літый> паплавок 0,0 (нуль) </літый>
  • пустая радок і радок "0"
  • <�Літый> масіў з нулявымі элементамі <�Літый> аб'ект з нулявымі зменнымі-членамі (PHP 4 толькі) <�Літый> спецыяльны тып NULL (уключаючы неўпаўнаважаныя зменныя) </літый>
0
дададзена
if (! isset($var) || (isset($var) && $var == 'false')) {
           echo 'false';
    }
    else if ((isset($var)) && ($var == 'true')) {
           echo 'true';
    }

выкарыстоўвайце гэты код. калі якое-небудзь значэнне прысвойваецца зменнай яна будзе лічыцца сапраўдным ў булевай expressions.That таму другая ўмова выконваецца.

0
дададзена
дададзена аўтар machineaddict, крыніца
@machineaddict я выправіў свой адказ. ($ Вар == хлусня) будзе ацэньваць справядліва толькі пры $ вар пусты радок ці не ўсталяваны.
дададзена аўтар Prem Shankar, крыніца