本文介绍了请告诉我为什么第一个变种不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望你能在这一点上帮我:
我想通过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]);
这篇关于请告诉我为什么第一个变种不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!