2012-10-20 34 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 
} 
相关问题