2012-10-20 62 views
0

我有這樣的對象是否可以使用PHP更改SimpleXMLElement對象內的數據類型?

$data = simplexml_load_string('<xml><admin>0</admin></xml>'); 

其中$數據 - >管理= 「0」 (string)。因此,用字符串0,下面將始終返回true

if($data->admin) { 
    echo 'is admin'; 
} 

通過鑄造變量,這將正常工作

if((int)$data->admin) { 
    echo 'is admin'; 
} 

但我還是想知道如果有可能改變內部的數據類型該對象(就像在一個數組內部這樣做),所以我不必做類型轉換。

回答

0

如果字符串是'0',它將返回false。如果將它轉換爲int,它仍然會返回false。 )最後,邏輯表達式被轉換爲布爾值。所以,你想做什麼是無用的)

+0

你測試過嗎?我已經做了! '$ data-> admin'返回一個字符串0,'if($ data-> admin)'返回** true **,不管值是1還是0! – user1643156

+0

好吧,我現在會測試它))但它令人難以置信。 –

+0

好吧,你是對的),但它是因爲它被認爲是對象。不是字符串。試試這個:if($ data-> admin!= 0) –

0

沒有辦法在PHP這樣做,而不是類型轉換它,你可以只是嘗試這種解決方案

if ($data->admin != 0){ 
    //is admin 
} 
+0

是的,這就是我在做類型轉換之前的做法。看起來我必須忍受它或學習一些DOMDocument。 – user1643156

0

你也可以試試這個)雖然我不」 t認爲它的好方法)這裏最好的是再次比較零,而不是進行類型轉換。如果你想要類型轉換,你可以做下面的事情。但它不是一個好的做法,使3操作,而不是1)

$data = simplexml_load_string('<xml><admin>0</admin></xml>'); 
if(strip_tags($data->admin->asXML())) 
{ 
//is admin 
} 
相關問題