2012-08-15 2 views
0

숫자 대신 가변 인덱스를 사용할 때 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 데이터를 보여줍니다

다음은 SimpleXML을 호출 내 코드입니다. 그러나 변수 $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을 사용하여 작동시킬 수있었습니다. 도움을 많이 주셔서 감사합니다! –

+0

굉장한 : D 나는 그것이 기뻤다. – trevorkavanaugh

+0

엄지 손가락 :'is_numeric'은 거의 결코 당신이 원하는 기능이 아닙니다. 날 믿지 않니? 'is_numeric ("1.09e52")'을 시도하십시오. 즉, 이것은 SimpleXML이 Not Normal PHP가되는 또 다른 사례입니다. 실제 PHP 배열의 경우 '$ variable [0]'및'$ variable [ "0"]'이 가장 확실합니다 **는 ** 동일합니다. – IMSoP