猿问

PHP、XML:如何删除重复的嵌套对象?

如果有一个包含以下内容的xml文件,如何删除重复的对象?似乎没有一个 php simplexml 函数可以做到这一点。任何帮助将不胜感激。


<?xml version="1.0"?>

<cars>

  <car>

<year>2000</year>

<make>cheverolet</make>

<model>malibu</model>

</car>

  <car>

<year>2019</year>

<make>cheverolet</make>

<model>malibu</model>

</car>

  <car>

<year>2000</year>

<make>cheverolet</make>

<model>malibu</model>

</car>

</cars>


qq_遁去的一_1
浏览 147回答 1
1回答

慕尼黑5688855

使用 SimpleXML 将起作用,您可以使用它unset() 来删除项目,在这里我将已在数组中找到的项目存储起来,并在删除它或将其添加为新发现的组合之前进行检查。唯一的复杂之处是在您正在修改的列表中取消设置项目的常见事情,所以在这里我只是一直$carPos指向列表中的实际项目,只有当我找到一个独特的项目时才增加它。这用于xpath()查找要查看的汽车列表,以便该列表独立于正在修改的列表...$found = [];$xml = simplexml_load_string($data);$carPos = 0;foreach ( $xml->xpath("//car") as $key => $car )&nbsp; &nbsp;{&nbsp; &nbsp; $carType = (string)$car->year.",".(string)$car->make.",".(string)$car->model;&nbsp; &nbsp; if ( isset ( $found[$carType]) )&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; unset ($xml->car[$carPos]);&nbsp; &nbsp; }&nbsp; &nbsp; else&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; $found[$carType] = true;&nbsp; &nbsp; &nbsp; &nbsp; $carPos++;&nbsp; &nbsp; }}
随时随地看视频慕课网APP
我要回答