为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
qq_遁去的一_1 2021-09-05 20:50:36
如果有一个包含以下内容的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>
查看完整描述

1 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

使用 SimpleXML 将起作用,您可以使用它unset() 来删除项目,在这里我将已在数组中找到的项目存储起来,并在删除它或将其添加为新发现的组合之前进行检查。


唯一的复杂之处是在您正在修改的列表中取消设置项目的常见事情,所以在这里我只是一直$carPos指向列表中的实际项目,只有当我找到一个独特的项目时才增加它。这用于xpath()查找要查看的汽车列表,以便该列表独立于正在修改的列表...


$found = [];

$xml = simplexml_load_string($data);


$carPos = 0;

foreach ( $xml->xpath("//car") as $key => $car )   {

    $carType = (string)$car->year.",".(string)$car->make.",".(string)$car->model;

    if ( isset ( $found[$carType]) )    {

        unset ($xml->car[$carPos]);

    }

    else    {

        $found[$carType] = true;

        $carPos++;

    }

}


查看完整回答
反对 回复 2021-09-05
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信