判断xml转换的数据是否为数组

it2025-09-26  1

问题

解析前的XML:

<item> <type>9</type> <id>3</id> <pid>0</pid> <name/> <value/> </item> <item> <type>9</type> <id>4</id> <pid>0</pid> <name>Intranet</name> <value> <ip_range> <begin>3232235521</begin> <end>3232301054</end> </ip_range> </value> </item> <item> <type>9</type> <id>837567</id> <pid>0</pid> <name>新类别</name> <value> <ip_range> <begin>2130706434</begin> <end>2130706434</end> </ip_range> <ip_range> <begin>2130706433</begin> <end>2130706433</end> </ip_range> </value> </item>

解析后的XML:

问题:

一般我们的数据格式都是统一的,以便循环处理数据。第一次遇到这样子的数据我都懵逼了,跑去问c++的同事,能不能让数据格式保持一致。别没有数据的时候参数不见了;只有一个数据的时候参数不是数组,两个及以上的数据参数才是数组。得到的回复是:xml就是这样的。。。

解决方法

以下是尝试过的方法

(1)使用(array)ip_range把参数类型转换为数组,失败

        上图第2个红圈的ip_range确实转换为数组了,但是本就是数组格式的ip_range数据只剩下第一条。。第二条以后的都不见了

(2)使用is_array(ip_range)判断,失败

        不管是第2个红圈还是第3个红圈的ip_range,都会返回false

(3)使用isset(ip_range[0])判断,失败

        不管是第2个红圈还是第3个红圈的ip_range,都会返回true

(4)使用count(ip_range) > 1判断,成功

         灵光一闪通过数组的长度来判断,没想到成功了!!!

最新回复(0)