2011-04-20 57 views
0

我試圖做到以下幾點與WordPress的PHP條件語句:不等於操作

「如果是第92頁,頁父 92」

以下是我有:

<?php if (!is_page(92) || $post->post_parent !== 92) { echo $foo; } ?>

如果我使用一個或另一個作爲條件,它的工作原理;當我添加第二個條件時,它會中斷。

任何幫助將不勝感激。

乾杯!

+0

你檢查這兩個值,以確保它們是不一樣的價值? – 2011-04-20 14:43:58

+2

定義「休息」? – Cyclone 2011-04-20 14:47:22

+1

只是澄清語言歧義,你的意思是「如果_either_頁面不是92或者如果父母不是92」,而不是「如果_neither_ page _nor_ parent是92」,對嗎? (對於後者,你需要'&&'而不是'||'。) – Wiseguy 2011-04-20 14:55:19

回答

3

你的問題可能是在使用||而不是& &。

你希望它呼應如果你不是頁面上92 你是不是在頁面的子頁面92.

比方說,你是92頁,則您當前的代碼做這個:

if (false || true)

因爲92是不是92頁。因此家長,因爲一個條件是真實的,它會觸發。

如果你在92子頁面,那麼它的反面:

if (true || false)

如果你是一個網頁,是不是92或92子頁面,那麼你會得到:

if (true || true)

因此,它總是會觸發,無論哪一頁您的,因爲||只需要一個真實的陳述來說明整個條件是正確的。

因此,更改您的代碼

<?php if (!is_page(92) && $post->post_parent !== 92) { echo $foo; } ?>

這倒給出了一個合乎邏輯的運行,如:

頁92:

的子頁面的92

if(false && true) //false, won't trigger

if(true && false) //false, won't trigger

一些無關的網頁:

if(true && true) //true, will trigger

+0

ahhhhh,是的。你是對的!我忘了,如果滿足一個條件,則觸發條件。 – 2011-04-20 15:02:27

+0

哦。這就是我認爲我在上面的評論中澄清的內容。 – Wiseguy 2011-04-20 15:04:38

+0

謝謝你,我感謝你的時間。乾杯! – 2011-04-20 15:05:02

0

這只是!=不!==,只有一個等於

+0

請參閱:http://php.net/manual/en/language.operators.comparison.php'不一致' 我不認爲這是這裏的問題。 – Yoshi 2011-04-20 14:45:50

+0

也可以!==。 !==是檢查一個的文字類型。 – Phoenix 2011-04-20 14:46:16

1

您的聲明中有一個額外的等號。運算符!==用於布爾檢查。由於post_parent會自動解析爲「真」,因爲它有一個值,它總是會回顯「foo」。將其更改爲以下內容。

<?php if (!is_page(92) || $post->post_parent != 92) { echo $foo; } ?> 
+0

不正確。 !==適用於所有數據類型。當然,這可能是他的問題,如果$ post-> post_parent返回一個字符串而不是一個int,那麼它就不起作用。 – Phoenix 2011-04-20 14:48:01

+0

同意 - 我忘了帶有值的變量會自動解析爲「true」。 – 2011-04-20 14:49:32

+0

嗯,是的,我也試過。還是不行 - – 2011-04-20 14:50:13