如何在三元运算符中生成if-else


how to make this if else in ternary operator

我正在查看页面中查找电子邮件。电子邮件有两种方式可以到达那里。通过POST或SESSION。如果它是$_POST,那么我想使用$_POST电子邮件,另一方面,我想使用会话中保存的电子邮件。目前我的代码低于

$email = (isset($_POST['email']) ? $_POST['email'] : '');

用最少的代码行做这件事的最佳方法是什么?

我猜您只是在寻找这个(假设电子邮件地址存储在密钥email下的$_SESSION数组中):

$email = (isset($_POST['email']) ? $_POST['email'] : $_SESSION['email']);

还是我误解了你的问题?

试试这个:

$email = (isset($_POST['email']) ? $_POST['email'] : (isset($_SESSION['email'])) ? $_SESSION['email'] : '');

与相同

if(isset($_POST['email'])) {
    $email = $_POST['email'];
} else {
    if(isset($_SESSION['email'])) {
        $email = $_SESSION['email'];
    } else {
        $email = '';
    }
}

@Gabriel Santos 正确答案的有趣替代方案

$input = function($param, $default = '') {
    static $input;
    if (null === $input) {
        $input = array_merge($_SESSION, $_POST);
    }
    return isset($input[$param]) ? $input[$param] : $default;
};

// get input
$email = $input('asd');