php simpleXml迭代停止移动到下一个元素

时间:2017-01-23 19:23:54

标签: php loops foreach simplexml

你能解释一下SimpleXmlElement的foreach迭代的这种行为吗?

这个foreach循环运行良好,并遍历特定TAG中的所有元素

        $tagName = $jednaPodminka['tag_name'];

        foreach ($xmlelement->{$tagName}->ROW as $oneRow)
        {
            // check all rows in specific tag
            $fld = (object) $oneRow->{(string) $jednaPodminka['field_name']};
            $hodnota = (string) $fld;

            $vysledek = $this->condManager->otestuj($hodnota, $jednaPodminka['value'], $jednaPodminka['cond']);
            if ($vysledek)
            {....}
        }

但是当我在foreach循环之前定义$ rowset然后我在循环中使用这个rowset时,循环在两次迭代后停止迭代$ rowset元素,所以它迭代前两个项目然后重置并保持第一个元素 - >有效地使这个循环无止境

        $tagName = $jednaPodminka['tag_name'];
        $rowSet = $xmlelement->{$tagName}->ROW;
        $hmr2 = count($rowSet);
        foreach ($rowSet as $oneRow)
        {
            $fld = (object) $oneRow->{(string) $jednaPodminka['field_name']};
            $hodnota = (string) $fld;

            $vysledek = $this->condManager->otestuj($hodnota, $jednaPodminka['value'], $jednaPodminka['cond']);
            if ($vysledek)
            {....}

        }

XMLElement(加载的xml文件)如下所示:

<TAG>
<ROW>
<FIELD>value</FIELD>
<FIELD>value</FIELD>
<FIELD>value</FIELD>
</ROW>
<ROW>
<FIELD>value</FIELD>
<FIELD>value</FIELD>
<FIELD>value</FIELD>
</ROW>

当我使用count($ rowset)时,我收到39.所以有39个块需要检查。

是否与循环内的其他对象/命名空间调用函数(&#34; otestuj&#34;)有关?

在localhost,win,xampp,php 7.0上进行测试

0 个答案:

没有答案