在下面的SimpleXMLElement对象$results
中,我想从TEST数组中删除ID为13011146
的元素。我不确定如何正确访问值1
的数组键,因此我使用的是计数器$i
,但这会给我一个错误Node no longer exists
,指向foreach行
TL; DR :你如何取消$result->TEST[1]
?
SimpleXMLElement Object
(
[TEST] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[ID] => 13011145
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[ID] => 13011146
)
)
)
)
PHP:
$i = 0;
foreach($results->TEST as $key => $value) {
if( (string)$value['ID'] == 13011146 ) {
unset($results->TEST[$i]);
}
$i++;
}
答案 0 :(得分:0)
foreach($results->TEST->children() as $key => $value) {
$attributes = $value->attributes();
foreach($attributes as $a => $b) {
if (( (string)$a == 'ID' ) && ( (string)$b == '13011146' )) {
unset($results->TEST[$key]);
}
}
}
答案 1 :(得分:0)
试试这个
$node = $results->children();
unset($node[1]);
答案 2 :(得分:0)
更优雅的方式;它在不使用$ attributes ['@attributes']的情况下为您提供相同的结果:
$attributes = current($element->attributes());
对于特定的键/值对,我们可以使用:
$attributes = current($value->attributes()->NAME);
希望它有所帮助!
答案 3 :(得分:0)
试试这个:
$sxe = new SimpleXMLElement($xml);
foreach ($sxe->children() as $child){
foreach($child as $key=>$item){
echo $key.': '.$item.'<br />';
}
}