【问题标题】:foreach loop not working for simplexmlelement in phpforeach 循环不适用于 php 中的 simplexmlelement
【发布时间】:2014-10-02 05:35:20
【问题描述】:

我正在访问一个 api 并使用 Simplexml 元素读取内容。但是当我使用 foreach 循环访问节点的值时。它只给了我第一个循环的价值。而不是其他人.... 下面是我的代码

<?php
include('connection.php');
header("Content-Type: text/xml;");
function httpGet($url)
{
    $ch = curl_init();  

    curl_setopt($ch,CURLOPT_URL,$url);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
//  curl_setopt($ch,CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'header1:value1',
    'header2:value2'
    )); 
    $output=curl_exec($ch); 
    curl_close($ch);
    return $output;
}
$data= httpGet("http://apiurl");
$xml = new SimpleXMLElement($data);
foreach ($xml->node1->node2->node3 as $info) {
   echo $info->name, ' played by ', $info->actor, PHP_EOL;
}
?>

我正在阅读的xml格式

    <?xml version='1.0' standalone='yes'?>
    <main>
     <node1>
      <title>PHP: Behind the Parser</title>
      <node2>
       <node3>
        <name>Ms. Coder</name>
        <actor>Onlivia Actora</actor>
       </node3>
</node2>
<node2>
       <node3>
        <name>Mr. Coder</name>
        <actor>El Act&#211;r</actor>
       </node3>
      </node2>
     </node1>
    </main>

当我在上面运行 php 代码以读取具有 xml 格式的 api 内容时,如上所示。 我想使用 foreach 循环读取名称和演员节点。但我无法仅访问 node3 下的名字和演员节点,而不是第二个.... 请更正 foreach 循环或代码中的任何缺陷..请突出显示并帮助我更正....

【问题讨论】:

  • 当你 foreach ($xml->node1->node2->node3 as $key = $value) {var_dump $key} 会发生什么
  • 对不起,我粘贴了不完整的 xml 格式。现在已经更正并完成了。请再次验证

标签: php xml foreach


【解决方案1】:

可以这样设置

foreach ($xml->node1->node2 as $info) {
   echo $info->node3->name, ' played by ', $info->node3->actor, PHP_EOL;
}

【讨论】:

  • 对不起,我粘贴了不完整的 xml 格式。现在已经更正并完成了..请再次验证。真的很抱歉....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 2018-01-08
  • 1970-01-01
相关资源
最近更新 更多