PHP如何用foreach循环遍历SimpleXMLElement解析的XML关键词数组值
正确遍历写法
你之前的代码存在两个问题:
- 遍历节点路径错误,
researcher_keyword不是根节点下的直接子元素,需要写全层级路径 value是子节点而非属性,不能用数组形式['value']读取,需要用子节点访问方式->value读取,同时要转成字符串避免返回SimpleXMLElement对象
基础遍历输出(换行显示)
$oXML2 = new SimpleXMLElement( $response2 ); foreach ($oXML2->researcher->researcher_keywords->researcher_keyword as $item) { $keyword = (string)$item->value; echo $keyword . "<br>"; }
输出竖线|分隔的结果
如果需要直接得到用竖线拼接的完整字符串,可先把所有值存入数组再统一拼接:
$oXML2 = new SimpleXMLElement( $response2 ); $keywords = []; foreach ($oXML2->researcher->researcher_keywords->researcher_keyword as $item) { $keywords[] = (string)$item->value; } // 拼接为竖线分隔字符串 $result = implode('|', $keywords); echo $result;
补充说明
从你提供的var_dump结果可以看到researcher_keyword本身就是可迭代的数组结构,foreach会自动识别并遍历所有元素,不需要提前设置固定循环上限,也不会出现下标越界问题。
内容的提问来源于stack exchange,提问作者User301276
相关产品推荐
相关产品推荐

