1

我的 xml 看起来像这样:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<images>
    <pic>
        <image>54</image>
        <descr>Image 1</descr>
    </pic>
    <pic>
        <image>32</image>
        <descr>Image 2</descr>
    </pic>
    <pic>
        <image>47</image>
        <descr>Image 3</descr>
    </pic>
</images>

我想删除一个元素,例如第二张图片(图 32)。使用此代码,但它不起作用。

$xml = simplexml_load_file('../../images.xml');

$target = false;
$i = 0;
foreach ($xml->pic as $m) {
  if ($m['image']=='32') { $target = $i; break; }
  $i++;
}
if ($target !== false) {      //$target always be $false
  unset($xml->pic[$target]);
}

echo $xml->savexml();

感谢您的任何建议。

4

3 回答 3

1

观察

$m是对象不是数组,所以$m['image']应该改为$m->image

更改$target = false;$target = 0 ;

例子

$xml = simplexml_load_file ( '1.xml' );
$target = 0;
$i = 0;
foreach ( $xml->pic as $m ) {
    if ($m->image == '32') {
        $target = $i;
        break;
    }
    $i ++;
}

if ($target !== false) {
    unset ( $xml->pic [$target] );
}
echo $xml->savexml ();
于 2012-04-17T22:35:42.370 回答
0

尝试创建一个新XML对象,只添加您想要的数据并保存新对象。

于 2012-04-17T22:28:01.750 回答
0

你的测试是错误的

if ($target !== false) { 

应该

if ($target > 0) { 
于 2012-04-17T22:28:30.783 回答