请告诉我为什么第一个变种不起作用
我希望你能在这一点上帮我:
我想通过unset删除一个XML节点。关于如何做到这一点,我有两个变种,但只有一个是有效的。请告诉我有什么不同或为什么只有第二个变量有效。
因此,在使用第一个变体时,print_r()函数返回整个XML文件,其中包含本应删除的图像‘hansio’。但当使用第二个变体时,图像将被删除!(您实际上可以将整个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>
解决方案
第一个变量不起作用,因为您正在取消设置新创建的数组的元素,SimpleXML元素根本不会被触及。尝试
unset($image[0][0]);
相关文章