2012-10-21 25 views
1

我希望你能幫助我在這一個:PHP,SimpleXML的,刪除:請告訴我爲什麼第一種變體不工作

我想通過取消設置刪除XML節點。我有兩種不同的方式來完成這個任務,但只有一個正在工作。請告訴我最新的差異爲什麼只有第二個變體正在工作。

因此,當使用第一個變體時,print_r()函數會返回應該被刪除的圖像'Hansio'的整個xml文件。但是當使用第二個變體時,圖像被刪除!

(實際上,你可以複製整個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> 

回答

0

第一瓦里安t不起作用,因爲你沒有設置新創建的數組的元素,所以SimpleXML元素根本不被觸及。嘗試

unset($image[0][0]); 
+0

謝謝!答案是確切的和重點! –

相關問題