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>

1つの要素、たとえば2番目の写真(画像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 に答える