计算 XML 和 PHP 中有多少 children
Count how many children are in XML with PHP
我对 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"里面为每个
问题是我不确定有什么方法可以知道我必须重复 for 循环多少次。因为在这个文件中 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;
}
}
是真的吗?
抱歉英语不好
尝试将 foreach ($xml->alert->info[$i] as $entry)
替换为:
foreach ($xml->alert->info[$i] as $j => $entry)
当前项目索引将为$j
您需要为此使用 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());
}
?>
输出如下:
Person 1 has got 3 children.
Person 2 has got 5 children.
也看看这个 link : xml count using php
你可能把它复杂化了一点,因为它对你来说是新的。
首先,您不需要像 $xml->alert
那样引用 alert 根元素,因为 SimpleXMLElement 名为变量 $xml
表示文档元素 already.
其次,这里不用数,直接foreach
即可:
foreach ($xml->info as $info) {
echo ' * ', $info->asXML(), "\n";
}
这将迭代 info 元素,它们是 alert 元素的子元素。
我推荐 Basic SimpleXML usage guide in the PHP manual 以开始使用 SimpleXML。
我对 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"里面为每个 问题是我不确定有什么方法可以知道我必须重复 for 循环多少次。因为在这个文件中 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;
}
}
是真的吗?
抱歉英语不好
尝试将 foreach ($xml->alert->info[$i] as $entry)
替换为:
foreach ($xml->alert->info[$i] as $j => $entry)
当前项目索引将为$j
您需要为此使用 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());
}
?>
输出如下:
Person 1 has got 3 children. Person 2 has got 5 children.
也看看这个 link : xml count using php
你可能把它复杂化了一点,因为它对你来说是新的。
首先,您不需要像 $xml->alert
那样引用 alert 根元素,因为 SimpleXMLElement 名为变量 $xml
表示文档元素 already.
其次,这里不用数,直接foreach
即可:
foreach ($xml->info as $info) {
echo ' * ', $info->asXML(), "\n";
}
这将迭代 info 元素,它们是 alert 元素的子元素。
我推荐 Basic SimpleXML usage guide in the PHP manual 以开始使用 SimpleXML。