简体   繁体   中英

Converting a PHP if/else statement to use ternary format

I want to convert this if/else statement to ternary format:

function session_active()
{
  if ($_SESSION['p_logged_in']) { 
    return true; 
  } 
  else { 
    return false; 
  }; 
}

I tried:

function session_active()
{
  ($_SESSION['p_logged_in'] ? true : false);
}

but it always returns false.

I am looking at the examples at http://davidwalsh.name/php-ternary-examples and this seems correct as far as I can see from the examples. Why does it always return false?

You may try to simple return the $_SESSION['p_logged_in'] value :-

function session_active()
{
  return  (bool)$_SESSION['p_logged_in'];
}

php isnt ruby, you have to return that value from the ternary.

to elaborate in more detail...

function session_active()
{
  return ($_SESSION['p_logged_in'] ? true : false);
}

Try this:

function session_active() {
   return (isset($_SESSION['p_logged_in'])) ? true : false;
}

to correct your logic add return in front of your statment
to simplify it do: return (bool)$_SESSION['p_logged_in'];

$_SESSION['p_logged_in'] === true$_SESSION['p_logged_in'] != null之间有区别,通过返回$ _SESSION ['p_logged_in']可能会超出其测试范围。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM