2014-03-06 66 views
0

解決 (現金將在10分鐘內被添加。)添加倍數args數組

我有一個自定義後類型的腳本在我的functions.php(WordPress的),其中我不明白它的意義。

$query_args = array(
'posts_per_page' => 5, 
'post_type'  => $is_some_page ? CPT_ONE : CPT_TWO, 
'post_status' => 'publish', 
'paged'   => 1 
); 

腳本加載完美的,沒有任何問題存在。

問題:我想添加一個額外的post_type,但我不明白:符號...它是什麼意思?以及如何添加更多? 這不起作用:

'post_type' => $is_some_page ? CPT_ONE : CPT_TWO : CPT_THREE,

編輯:感謝有一看,改變標籤的問題。 非常感謝別人指着我在與運營商合作的正確方向。

+2

這顯然是一個'php'問題,不是'javascript' –

+0

這是一個三元運算符: HTTP:/ /stackoverflow.com/questions/6259982/js-how-to-use-the-ternary-operator – kjhf

+1

'$ is_some_page? CPT_ONE:($ is_other_page?CPT_TWO:CPT_THREE)'。 – h2ooooooo

回答

5

你要找的是ternary if運營商(很多語言都這樣,包括PHP和JavaScript)。

所以這個:

$someVar = $someBool ? $val1 : $ val2 

等同於:

if ($someBool) 
{ 
    $someVar = $val1; 
} 
else 
{ 
    $someVar = $val2; 
} 

所以這個:

'post_type' => $is_some_page ? CPT_ONE : CPT_TWO : CPT_THREE 

沒有意義,因爲$is_some_page只能評估爲真或假。但不清楚你的邏輯應該是什麼。什麼情況下你想post_typeCPT_ONECPT_TWOCPT_THREE

你可以做這樣的事情:

'post_type' => $is_some_page ? CPT_ONE : ($some_other_condition ? CPT_TWO : CPT_THREE) 

即相當於一個if/else if/else

+0

請注意您的三元狀況。 PHP的三元操作符從右到左(除非告訴否則parenthesises),所以它不會做你所期望:http://codepad.org/o3tgL4Lw – h2ooooooo

+1

它也能給[非常非常奇怪的結果] (http://codepad.org/gTprxKHX)。 (?真1:假2:3):例如'的var_dump;'輸出'INT(2)'同時'的var_dump(真1:(假2:?3));'輸出'INT(1)'。 – h2ooooooo

+0

@ h2ooooooo:呃,PHP。所以短版本可能會避免在PHP中嵌套三元運算符,因爲它是PHP。 –