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]);
这篇关于请告诉我为什么第一个变种不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:请告诉我为什么第一个变种不起作用
基础教程推荐
猜你喜欢
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 在多维数组中查找最大值 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01