PHP,simplexml,Delete:请告诉我为什么第一个变量不起作用
我希望你能在这一点上帮助我: 我想通过unset删除一个xml节点。我有两种方法可以做到这一点,但只有一种是有效的。请告诉我有什么不同或为什么只有第二种变体有效 因此,当使用第一个变量时,print_r()函数将返回整个xml文件,其中包含本应删除的图像“Hansio”。但是当使用第二种变体时,图像被删除 (实际上,您可以将整个php代码以及xml文件文本复制到一个文件中——并立即进行测试——不需要任何更改——当然,除了注释一个变体之外。) PHP文件:PHP,simplexml,Delete:请告诉我为什么第一个变量不起作用,php,xpath,simplexml,unset,Php,Xpath,Simplexml,Unset,我希望你能在这一点上帮助我: 我想通过unset删除一个xml节点。我有两种方法可以做到这一点,但只有一种是有效的。请告诉我有什么不同或为什么只有第二种变体有效 因此,当使用第一个变量时,print_r()函数将返回整个xml文件,其中包含本应删除的图像“Hansio”。但是当使用第二种变体时,图像被删除 (实际上,您可以将整个php代码以及xml文件文本复制到一个文件中——并立即进行测试——不需要任何更改——当然,除了注释一个变体之外。) PHP文件: <?php $galleries
<?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 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]);