0

我有这个对象

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

其中 $data->admin = "0" (string)。因此,对于字符串 0,以下内容将始终返回 true

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

通过转换变量,这将正常工作

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

但我仍然想知道是否可以更改对象内部的数据类型(就像在数组中这样做),所以我不必进行类型转换。

4

4 回答 4

0

不是 SimpleXML。您可以做的是改用DOMDocument。不推荐使用 SimpleXML。

于 2012-10-20T03:20:34.230 回答
0

如果字符串为 '0',它将返回 false。如果你将它转换为 int,它仍然会返回 false。) 最后逻辑表达式被转换为布尔值。所以你试图做的是无用的)

于 2012-10-20T03:21:31.593 回答
0

你也可以试试这个)虽然我认为它不是好方法)这里最好的方法是再次比较零而不是进行类型转换。如果您想要类型转换,您可以执行以下操作。但是进行 3 次操作而不是 1 次操作并不是一个好习惯)

$data = simplexml_load_string('<xml><admin>0</admin></xml>');
if(strip_tags($data->admin->asXML()))
{
//is admin
}
于 2012-10-20T15:01:21.943 回答
0

在 PHP 中没有办法这样做,而不是类型转换,你可以试试这个解决方案

if ($data->admin != 0){ 
    //is admin
}
于 2012-10-20T03:25:03.077 回答