我正在研究一种分配等于已过滤路径的变量的方法(根据PHP中的值过滤某些节点)。当它的同级(“ Status”)等于“ Funded”时,我试图返回“ Ident”节点的值。
在与此项目相关的另一篇文章中,我获得了这些过滤项的计数(IMSoP的answer),但是我的目的是获取分页方案中每次迭代的过滤项(节点)值。 >
使用已过滤项目的计数(来自先前的文章),分页代码遍历xml树数据中的已过滤项目。
感谢您带来的线索。
这是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('//record[@id="1A"]');
$funded_count = 0;
foreach($xml_bio_record as $xb) {
foreach ($xb->congrant as $congrant) {
if ( (string)$congrant->status == 'Funded' ) {
$funded_count++;
}
}
}
这是我试图获取过滤后的值以显示在分页循环中的内容。我在这里简化了循环,只将循环从0循环到已过滤项目的数量:
$xml_bio_record=$xml_bio->xpath('//record[@id="1A"]');
for ($i = 0; $i <=$funded_count; $i++) {
$strCongrant_ident = $xml_bio_record[0]->xpath('./congrant[$i][status="Funded"]/ident];
echo('<br>$strCongrant_ident is...'.$strCongrant_ident);
}
我以前在分页设置中使用过这种循环思想,但无法将过滤器应用于此处的变量-它不会将'ident'节点值返回为匹配的'status =“资助”节点。感谢您带来的线索。