【问题标题】:Is it possible to change data type inside a SimpleXMLElement object with PHP?是否可以使用 PHP 更改 SimpleXMLElement 对象内的数据类型?
【发布时间】:2012-10-20 03:16:32
【问题描述】:

我有这个东西

$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';
}

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

【问题讨论】:

    标签: php object simplexml type-conversion


    【解决方案1】:

    不适用于 SimpleXML。你可以做的是改用DOMDocument。不推荐使用 SimpleXML。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你测试了吗?我已经做了! $data-&gt;admin返回一个字符串0,if($data-&gt;admin)无论是1还是0都返回true
      • 好的,我现在就测试一下))但它令人难以置信。
      • 好吧,你是对的)但这是因为它被视为对象。不像字符串。试试这个:if($data->admin!=0)
      【解决方案3】:

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

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

      【讨论】:

      • 是的,这就是我在类型转换之前所做的方式。看来我必须忍受它或学习一些DOMDocument。
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-05-31
        • 2018-02-20
        • 2012-05-29
        • 1970-01-01
        • 1970-01-01
        • 2018-08-19
        • 1970-01-01
        • 2012-04-25
        • 2016-06-24
        相关资源
        最近更新 更多