Simplexml问题无法从空属性获取Null

时间:2012-06-08 00:27:06

标签: php null simplexml

嗨,大家好,希望你能帮忙:

我正在尝试阅读体育调度计划中的xml。

我在下面是我正在阅读的XML示例。到目前为止,使用Simpmle XML我已经能够正确读取游戏的所有属性。但是在示例中,您可以看到主场比分和客场比分仅在输入分数时显示为“”。这很好,因为我想写一个简单的if语句,说如果得分为空回声“ - ”。通过这种方式,观众知道他们还没有玩。

<Fixture Id="404" FixtureName="Round 4" ResourceId="4" PlayingAreaName="Court C" VenueId="2" VenueName="Adelaide Indoor Sports Centre" MapLink="" HomeTeamId="212" HomeTeam="THE SHINERS" HomeTeamScore="29" HomeTeamForfeit="False" AwayTeamId="203" AwayTeam="SANDBAR WARRIORS" AwayTeamScore="8" AwayTeamForfeit="False" Duration="40" Umpires="" CrossLeague="False" DivisionName="Division 1" CalendarColour="FFFF00" ResourceOrder="3" DateTime="13/03/2012 21:20"/>
<Fixture Id="406" FixtureName="Round 4" ResourceId="5" PlayingAreaName="Court D" VenueId="2" VenueName="Adelaide Indoor Sports Centre" MapLink="" HomeTeamId="210" HomeTeam="WE THOUGHT IT WAS A DISCO" HomeTeamScore="" HomeTeamForfeit="False" AwayTeamId="206" AwayTeam="AVERAGE JOE'S" AwayTeamScore="" AwayTeamForfeit="False" Duration="40" Umpires="" CrossLeague="False" DivisionName="" CalendarColour="FFFF00" ResourceOrder="4" DateTime="13/03/2012 21:20"/>

但是“”(空属性)总是返回零。有小费吗?我是php的新手

2 个答案:

答案 0 :(得分:0)

您可以使用empty()函数。

if (empty($fixture['HomeTeamScore'])) {
    echo "-";
}

PHP: empty - Manual

答案 1 :(得分:0)

如果我理解正确,您需要区分"""0"。因为PHP尽可能地猜测你要比较的类型,$foo == 0$foo == ''之类的语句不会这样做,因为它会猜测你想比较数字,并且会对{ {1}} ""

有几种方法可以解决这个问题:

  • 使用0运算符代替===(或==代替!==)(请参阅http://uk3.php.net/manual/en/language.operators.comparison.php
  • 使用!=检查字符串的长度,看它是否为空
  • 使用strlenis_int等检查变量的类型 - 如果您从SimpleXML中获取值,那么这个值可能无效,而SimpleXML会返回自己的类型

由于您使用的是SimpleXML,我认为代码看起来像是:

is_string