2012-08-15 17 views
0

我在使用變量索引而不是數字索引時未設置SimpleXML節點時出現問題。

這裏是我的代碼調用的SimpleXML:

$highlights = new SimpleXMLElement($prj['project_xmldata']); 
$node=$_POST['node']; 
if(count($highlights->highlights->highlight)>0) { 
    unset($highlights->highlights->highlight[$node]); 
    print_r($highlights); 
} 

的print_r的聲明內容仍然顯示原始XML數據。但是,如果我是使用數字索引而不是變量取消設置變量$node,那麼我會得到正確的響應,並刪除未設置的節點。

我試着用雙引號封裝變量,並確保$ _POST ['node']是一個正確的值。我做錯了什麼,或者我不能在方括號內放置一個變量?

回答

1

更改你的代碼這一點,讓我知道它說:

$highlights = new SimpleXMLElement($prj['project_xmldata']); 
$node=$_POST['node']; 
if(isset($highlights->highlights->highlight[$node])) {  
    unset($highlights->highlights->highlight[$node]);  
    print_r($highlights); 
} 
else 
    echo $node." = ".gettype($node); 

確保節點是正確的。確保它被註冊爲一個int而不是一個字符串。

$ variable [0]不同於$ variable [「0」]

+0

就是這樣!我想簡單地檢查(is_numeric)是否確保它是一個整數,但它仍然是一個字符串。使用settype我設法讓它工作,非常感謝幫助! – 2012-08-15 19:10:03

+0

太棒了:D我很高興它的工作! – trevorkavanaugh 2012-08-15 19:13:01

+0

經驗法則:'is_numeric'幾乎不是您想要的功能。不要相信我?嘗試'is_numeric(「1.09e52」)'。也就是說,這是另一種SimpleXML不是正常PHP的情況 - 對於真正的PHP數組,「$ variable [0]」和「$ variable [」0「]'最明確**是**相同。 – IMSoP 2012-08-18 22:10:43