【发布时间】:2014-10-21 09:34:35
【问题描述】:
我正在使用一段不错的短代码将我的 xml 字符串转换为 php 数组
$products = json_decode(json_encode(simplexml_load_string($products_xml)),TRUE);
一切正常,除了当我得到一个空数组而不是字符串时 xml 字段为空 - 当写入我的 SQL 数据库时,我看到字符串“数组”而不是一个空字段。
有没有用 php 做到这一点的好方法?
与此同时,我设法用这段代码解决了这个问题:
$products = json_decode(str_replace('{}', '""', json_encode(simplexml_load_string($products_xml))),TRUE);
【问题讨论】:
-
为什么要将整个对象转换成一个数组,而不是使用the many useful features of SimpleXML从中提取你想要的信息?
-
另外,为什么只有一个 empty 数组会导致单词 'Array' 被插入?根据您的问题和代码,您 总是 转换为数组,所以它总是会导致这种情况。是否有一些进一步的代码迭代结果数组(在这种情况下,正如我所说,你可能根本不需要数组转换)。
-
我只是喜欢使用关联数组 - 数组元素名称和 SQL 字段名称可以相同 - 稍后在代码中我也会进行排序等,使用数组更容易......
-
似乎正在发生的事情是 json_encode 将空元素转换为空数组:字符串中的 '{}' - json_decode 然后将它们更改为 php 空数组,即 'Array()' 写入SQL 数据库简单地显示为“数组”。通过将 '{}' 替换为简单的空字符串 '' 作为编码和解码之间的中间步骤,我在最终数组中实现了空字符串而不是更深层次的数组。
-
如果您编辑问题以包含您正在解析的 XML 示例以及您想要使用的数组结构,我可以为您提供其他准备方法。 JSON、PHP 和 XML 具有根本不同的数据结构,因此
json_decode(json_encode($foo))hack 总是会有混乱的边缘情况。 (我同意它很短,但我绝对反对“好”:P)
标签: php arrays xml json simplexml