我知道一些关于php的内容,很抱歉这个问题:
我有这个文件xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<alert>
<status> </status>
<nothing> </nothing>
<info>
<area>
</area>
</info>
<info>
<area>
</area>
</info>
<info>
<area>
</area>
</info>
</alert>
我必须做一个for循环并在每个“foreach”里面 问题是我不知道有什么方法可以知道我必须重复多次循环。因为在这个文件中xml(这是一个例子)我不知道有多少是
如果:
是好的$url = "pathfile";
$xml = simplexml_load_file($url);
$numvulcani = count($xml->alert->info); // is good ?
for ($i = 0; $i <= $numvulcani; $i++) {
foreach ($xml->alert->info[$i] as $entry) {
$area = $entry->area;
}
}
是真的吗?
抱歉英语不好答案 0 :(得分:3)
您需要使用 SimpleXMLElement :: count 函数 - 它会计算元素的子元素。
<?php
$xml = <<<EOF
<people>
<person name="Person 1">
<child/>
<child/>
<child/>
</person>
<person name="Person 2">
<child/>
<child/>
<child/>
<child/>
<child/>
</person>
</people>
EOF;
$elem = new SimpleXMLElement($xml);
foreach ($elem as $person) {
printf("%s has got %d children.\n", $person['name'], $person->count());
}
?>
输出如下:
第1个人有3个孩子。 人2有5个孩子。
另请查看此链接:xml count using php
答案 1 :(得分:0)
尝试将foreach ($xml->alert->info[$i] as $entry)
替换为:
foreach ($xml->alert->info[$i] as $j => $entry)
当前项目索引为$j
答案 2 :(得分:0)
你可能会因此对你有点过分复杂。
首先,您不需要像$xml->alert
那样引用 alert 根元素,因为变量{{1}命名的 SimpleXMLElement 表示文档元素已经。
其次,你不需要在这里算,你可以直接$xml
:
foreach
这会迭代作为 alert 元素子元素的三个 info 元素。
我推荐使用Basic SimpleXML usage guide in the PHP manual以获得SimpleXML的良好开端。