我有一组像这样的XML数据。
<data>
<person>
<name>Alice</name>
<date>343658755</date>
</person>
<person>
<name>Bob</name>
<date>655389955</date>
</person>
<person>
<name>Cathy</name>
<date>741876355</date>
</person>
</data>
使用PHP我使用SimpleXMLElement
解析它并尝试以日期格式显示时间戳。
$data = new SimpleXMLElement($xmlstr);
echo date( 'Y-m-d H:i:s', $data->person[0]->date);
显示以下警告。
Warning: date() expects parameter 2 to be long, object given in ....
回显$data->person[0]->date
显示时间戳没有任何问题。 var_dump()
显示以下输出。
object(SimpleXMLElement)#3 (1) {
[0]=>
string(9) "343658755"
}
我如何&#34;参考&#34;直接到这个字符串?如果这个字符串在一个对象里面,那么当我回显它时,为什么没有错误/警告?
我能使用date()
函数的唯一方法是将它转换为这样的整数类型。
echo date( 'Y-m-d H:i:s', (int) $data->person[0]->date );
它适用于所有版本的PHP吗?这样做有什么不好吗?
答案 0 :(得分:1)
错误信息非常清楚。 date()
函数需要参数为long,但您要传递的是SimpleXML对象。
从var_dump()
输出$data->person[0]->date
可以看出,它是一个对象。要获得时间戳部分,您必须将其转换为字符串。
这适用于所有地方。在使用SimpleXML时,您必须将对象显式地转换为字符串才能访问其中的内容。对于这种特殊情况,以下内容应该有效:
echo date('Y-m-d H:i:s', (string) $data->person[0]->date);