沃梦达 / 编程问答 / php问题 / 正文

请告诉我为什么第一个变种不起作用

PHP, simplexml, Delete: Please tell me why the first variant is not working(请告诉我为什么第一个变种不起作用)

本文介绍了请告诉我为什么第一个变种不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望你能在这一点上帮我:

我想通过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]);

这篇关于请告诉我为什么第一个变种不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:请告诉我为什么第一个变种不起作用

基础教程推荐