2012-10-17 30 views
0

Oké。我看到了這段代碼,我很好奇它是如何工作的以及它是如何工作的。 任何人都可以解釋這個給我嗎? 謝謝!未知的一塊PHP

$_SESSION['langtype'] 
    = (empty($_SESSION['langtype'])) ? 'false' : $_SESSION['langtype']; 
+2

它設置$ _SESSION [「langtype」]假,如果它沒有設置。否則,它只是當前值 – PoeHaH

+2

再設置它的一個三元運算符查看這個鏈接http://php.net/manual/en/language.operators.comparison.php – pkachhia

+1

你不應該使用「isset」,如果」不知道數組元素是否設置?因爲你看到,如果langtype是'0',它也會將它設置爲'false'。 – ATaylor

回答

1

它把在$_SESSION['langtype']"false"(作爲一個字符串,而不是BOOL VALUE)看的情況下$_SESSION['langtype']是空的(或與鍵langtype值不存在),否則保持相同的值。

這可能是壞主意,把"false"爲字符串。例如,如果這部傑作的作者決定進行檢查if ($_SESSION['langtype']) { },它將在任何情況下返回true。我很好奇這種解決方案應該是合理的。

1

其短手if-else聲明。如果(empty($_SESSION['langtype']))然後$_SESSION['langtype'] = false其他$_SESSION['langtype'] = $_SESSION['langtype']

1

這是本聲明中三元操作

 
$_SESSION['langtype'] = (empty($_SESSION['langtype'])) ? 'false' : $_SESSION['langtype']; 

這意味着如果Session變量命名langtype爲空,則返回false,否則使用langtype相同定義

之後的部分?代表值,如果函數

empty($_SESSION['langtype'])
真(意思是,如果它是空的,然後將其設置虛假或未經定義的變量),即
$_SESSION['langtype'] = false;

和部分之後表示else語句,即如果langtype不爲空,然後繼續它,因爲它是(等於定義值)

$_SESSION['langtype']=$_SESSION['langtype'];

0

,如果它沒有被設置(真),那麼這將是其他錯誤,如果它(假)它生病打印會話值

1

這就是所謂的三元運營商。它由條件表達式和兩個條件評估的返回值組成。

// if expression evaluates to true first value will be returned, 
// otherwise it will the second 
$variable = (expression) ? 'value if true' : 'value if false'; 
0
$_SESSION['langtype'] = (empty($_SESSION['langtype'])) ? 'false' : $_SESSION['langtype']; 

對於一個初學者上面的代碼是一樣長的版本,你可能知道

<?php 
    if(empty($_SESSION['langtype'])) { 
      $_SESSION['langtype'] = 'false'; 
    } else { 
      $_SESSION['langtype'] = $_SESSION['langtype']; 
    } 
?>