我正在使用xpath查询我的xml“名称为”FT“的结果项,但我知道某些结果项没有,因为它是一个实时源。我是否可以分配这些'非对象'一个值,所以我可以将它们输入我的mysql以及返回的值?
以下是我的xml部分结果项:
<live>
<Match ct="0" id="771597" LastPeriod="2 HF" LeagueCode="19984" LeagueSort="1" LeagueType="LEAGUE" startTime="15:00" status="2 HF" statustype="live" type="2" visible="1">
<Home id="11676" name="Manchester City" standing="1"/>
<Away id="10826" name="Newcastle United" standing="3"/>
<Results>
<Result id="1" name="CURRENT" value="1-1"/>
<Result id="2" name="FT" value="1-1"/>
<Result id="3" name="HT" value="1-0"/>
</Results>
</Match>
<Match ct="0" id="771599" LastPeriod="1 HF" LeagueCode="19984" LeagueSort="1" LeagueType="LEAGUE" startTime="16:00" status="2 HF" statustype="live" type="2" visible="1">
<Home id="11678" name="Norwich City" standing="1"/>
<Away id="10828" name="West Ham United" standing="3"/>
<Results>
<Result id="1" name="Current" value="2-3"/>
<Result id="2" name="HT" value="1-3"/>
</Results>
</Match>
</live>
我正试图用这个名字'FT'得到所有得分:
$result = $xpath->query('./Results/Result[@name="FT"]', $match);
$halftimescore = $result->item(0)->getAttribute("value");
我也改变了上述内容:
$result = $xpath->query('./Results/Result[@name="FT"]', $match);
if($result->length > 0) {
$halftimescore = $result->item(0)->getAttribute("value");
}
删除错误,但我得到FT值1-1,3-0,对于非对象,它重复3-0
答案 0 :(得分:2)
您的xpath查询似乎是在$matches
。
如果当前<Match>
没有FT结果,如果你没有在循环开始时初始化它的值,那么$halftimescore
保持前一个值是正常的。
您需要为每个$halftimescore
<Match>
$halftimescore = null;
$result = $xpath->query('./Results/Result[@name="FT"]', $match);
if($result->length > 0) {
$halftimescore = $result->item(0)->getAttribute("value");
}
或者使用else语句:
$result = $xpath->query('./Results/Result[@name="FT"]', $match);
if($result->length > 0) {
$halftimescore = $result->item(0)->getAttribute("value");
} else {
$halftimescore = null;
}
顺便说一句,因为匹配只能有一个FT分数,我会使用$result->length === 1
来测试xpath结果。