我正在研究一种根据某些节点在 PHP 中的值来过滤它们的方法。我正在尝试返回等于“已资助”的状态节点的计数。我不确定的部分是在新过滤器 ($xml_bio_children) 中使用数组(前一个过滤器 ($xml_bio_record[0]) 的结果)。
此代码不返回 $count_c 的计数。我将如何过滤 status="Funded"?感谢您提供任何线索。
这是 XML:
<?xml version="1.0" encoding="utf-8"?>
<data>
<record id="1A">
<congrant>
<ident>a</ident>
<status>Not Funded</status>
</congrant>
<congrant>
<ident>b</ident>
<status>Funded</status>
</congrant>
<congrant>
<ident>c</ident>
<status/>
</congrant>
</record>
<record id="1B">
<congrant>
<ident>a</ident>
<status>Not Funded</status>
</congrant>
<congrant>
<ident>b</ident>
<status>Funded</status>
</congrant>
<congrant>
<ident>c</ident>
<status/>
</congrant>
</record>
<record id="1C">
<congrant>
<ident>aaa</ident>
<status>Funded</status>
</congrant>
<congrant>
<ident>bbb</ident>
<status>Funded</status>
</congrant>
<congrant>
<ident>c</ident>
<status>Funded</status>
</congrant>
</record>
</data>
这是PHP:
$url_bio = "test.xml";
$xml_bio = simplexml_load_file($url_bio);
$xml_bio_record=$xml_bio->xpath('/data/record');
$count_a = count($xml_bio_record);
echo '<br>$count_a is...'.$count_a.'<br>';//
foreach($xml_bio_record as $xa){
echo "Found {$xa->status} <br>";
}
$xml_bio_record=$xml_bio->xpath('//record[@id="1A"]');
$count_b = count($xml_bio_record);
echo '<br>$count_b is...'.$count_b.'<br>';//
foreach($xml_bio_record as $xb){
echo "Found {$xb->status} <br>";
}
======== 作为对此的补充,如果我希望将一个变量设置为等于$xb->xpath('./congrant[status="Funded"]'),例如:$xml_congrant_congrant_children=$xb->xpath('./congrant[status="Funded"]')然后在分页场景中使用索引来循环资助结果,那如何实现?例如
for ($i = $offset; $i < ($offset + $per_page); $i++)
{
$strCongrant_ident = $xml_congrant_congrant_children[$i]['ident'];
}
我之前在分页设置中使用过这个循环想法,但是让过滤器应用于此处的变量不起作用。感谢您提供任何线索。
FFIVE
一只名叫tom的猫