> 백엔드 개발 > PHP 튜토리얼 > 新手发个php修改XML的问题

新手发个php修改XML的问题

WBOY
풀어 주다: 2016-06-23 14:06:19
원래의
1029명이 탐색했습니다.

$dom=new DOMDocument('1.0');$dom->load('ceshi.xml');$root=$dom->getElementsByTagName('online');$root=$root->item(0);$userid=$root->getElementsByTagName('userid');foreach($userid as $b){  foreach($b->attributes as $attr){ $value=$attr->nodeValue;$name[].=$attr->nodeName;{if($value=="xiao"){     print_r($name);   } }}}$dom->save('ceshi.xml');
로그인 후 복사


来个xml
<?xml version="1.0"?><online> <userid time="2007-06-13 11:20:08" ip="wangqile" label="wang">xiaxin</userid> <userid time="2007-06-13 13:22:15" pp="dasdsa" label="xiao" ip="dasdsa">rwet</userid> <userid time="2007-06-13 17:17:00" ip="dasdsa" label="ji"> gaoji</userid> </online>
로그인 후 복사


问题是按上面那种写法只循环label="xiao"的那一行,也就是只返回那一行nodename值。。
要是按上面写的话返回的是第一行第二行一起返回的nodename值。。我也没想出来怎么改~~新手求教啊!!!


回复讨论(解决方案)

你提前打印了$name 数组当然是那个样子啦,你在外层foreach下面打印$name 就对了。

你提前打印了$name 数组当然是那个样子啦,你在外层foreach下面打印$name 就对了。

试过了 不是这个原因~~你可以看看啊 打印出的是前两行的值。。哈哈

这个意思?

$dom=new DOMDocument('1.0');$dom->load('ceshi.xml');$root=$dom->getElementsByTagName('online');$root=$root->item(0);$userid=$root->getElementsByTagName('userid');foreach($userid as $b) {  if($b->attributes->getNamedItem('label')->nodeValue == 'xiao') {    foreach($b->attributes as $attr){      $res[$attr->nodeName] = $attr->nodeValue;    }    print_r($res);  }}
로그인 후 복사
Array
(
    [time] => 2007-06-13 13:22:15
    [pp] => dasdsa
    [label] => xiao
    [ip] => dasdsa
)

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿