2009-12-10 107 views
4

%2在下面的php中做了什麼?

$id=(int)@$_REQUEST['id']; 
echo (!($id%2))? 
    "{'id':$id,'success':1}": 
    "{'id':$id,'success':0,'error':'Could not delete subscriber'}"; 

回答

16

%modulus operator% 2因此是除以二後的餘數,因此無論是0(如果$id是偶數)或1(如果$id是奇數)。

表達式!($id % 2)使用自動轉換爲布爾值(其中0表示false並且所有非零值表示true)並且否定結果。因此,如果$id是偶數,那麼表達式的結果爲真,如果奇數,則表達式的結果爲false。這也決定了什麼echo在那裏打印。顯然,$id的偶數值表示成功。

稍微更復雜,但也許更容易理解的方式來寫上面的說法應該是:

if ($id % 2 == 0) 
    echo "{'id':$id,'success':1}"; 
else 
    echo "{'id':$id,'success':0,'error':'Could not delete subscriber'}"; 

但是,敗壞所有三元運算符的樂趣。儘管如此,我還是把這個條件寫成了!($id%2),而不是($id % 2 != 0)。誤用整數布爾值,導致一些難以診斷的錯誤,有時:-)

0

這是檢查ID是否是偶數。如果它是偶數,那麼PHP會將0評估爲false。

0

退房的Modulus section爲PHP,基本上,如果它的模數2的成功別人錯誤

0

正如有人說,%將由數除以之後給你剩下。實際上,如果id是偶數(或不是數字,或未定義(!!)),則該代碼塊將回顯「成功= 1」,如果id是奇數,則代碼「成功= 0」。