2015-04-23 24 views
3

是否有这样的oneliner?一个不错的三元OP?PHP,速记,如果..使用三元运算符

$F_NAME = $_SESSION['USR']['F_NAME']; 
if(isset($_POST['F_NAME'])) {$F_NAME = $_POST['F_NAME'];} 

基本上“如果POST发送,显示,即使后是空的,否则抓住从会议的价值,但前提是在没有设置好后或空”

真的分裂这里...

毛发寻找这样的事情:

$F_NAME = ? ($F_NAME ? isset($_POST['F_NAME']) : $_SESSION['USR']['F_NAME']); 
+0

$ F_NAME =(isset($ _ POST [ 'F_NAME'])? $ _POST ['F_NAME']:$ _SESSION ['USR'] ['F_NAME']); –

回答

3

它应该是:

(conditions) ? true : false 
    satisfies <--^  ^----> did not satisfy 

所以,这相当于为:

$F_NAME = isset($_POST['F_NAME']) ? $_POST['F_NAME'] : $_SESSION['USR']['F_NAME']; 
+0

不错。谢谢。 所以它看起来:(条件?真实结果:错误的结果) –

+0

是的,有'?'像你有'($ F_NAME?isset($ _ POST ['F_NAME'])'在条件内是不正确 – Ghost

+0

真棒。 我扔其与{可变}设定选项 ' 的foreach($ _SESSION [ 'USR']为$键=> $值){ \t $ {$键} \t =(isset一个foreach($ _ POST [$ key])\t?$ _POST [$ key] \t:$ _SESSION ['USR'] [$ key]); }' –

1

如鬼响应,或甚至更短

$F_NAME = $_POST['F_NAME'] ? : $_SESSION['USR']['F_NAME']; 
+0

谢谢!幽灵然而是正确的,有2个条件我必须满足,该声明不能默认为$ _SESSION ['USR'] ['F_NAME'] –

+0

但您可以通过简写 – Tom