PHP,SimpleXML的,删除:请告诉我为什么第一种变体不工作(PHP, simplexml,

2019-10-17 07:50发布

我希望你能帮助我在这一个:

我想通过取消设置删除XML节点。 我有一个如何可以这样做两种变体,但只有一个正在工作。 请告诉我什么区别或者为什么只有第二个变体工作。

因此,使用第一种变体时的print_r()函数还给与应已被删除的图像“Hansio”整个XML文件。 但是,使用第二方案,当图像被删除!

(您可以将整个PHP代码实际上复制到一个文件,以及XML文件的文本 - 和测试它的时候了 - 不需要改变 - 除了评论一个变体了,当然)

PHP文件:

<?php

$galleries = new SimpleXMLElement('galleries.xml', NULL, TRUE);

/*Variant 1: NOT WORKING_____________________________________________________________*/

$image = $galleries->xpath("//galleries/gallery[@name='gallery']/image[@name='Hansio']");
unset($image[0]);


/*Variant 2: WORKING BUT NOT SO CONVENIENT___________________________________________*/

foreach($galleries->xpath("//galleries/gallery[@name='gallery']/image[@name='Hansio']") as $image)
{
    unset($image[0]);
}

print_r($galleries);

?>

XML文件:

<?xml version="1.0" encoding="utf-8"?>

<galleries>
    <gallery name="gallery">
        <image name="image name 1"/>
        <image name="image name 2"/>
        <image name="Hansio"/>
        <image name="image name 4"/>
    </gallery>
</galleries>

Answer 1:

第一个变种不工作,因为你是你重置一个新创建的数组的元素,该元素的SimpleXML是不是在所有的感动。 尝试

unset($image[0][0]);


文章来源: PHP, simplexml, Delete: Please tell me why the first variant is not working