Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Simplexml问题可以';无法从空属性获取Null_Php_Null_Simplexml - Fatal编程技术网

Php Simplexml问题可以';无法从空属性获取Null

Php Simplexml问题可以';无法从空属性获取Null,php,null,simplexml,Php,Null,Simplexml,大家好,希望你们能帮忙: 我正在尝试读取作为体育日程安排程序一部分的xml 下面是我正在阅读的XML示例。到目前为止,使用simpmlexml,我已经能够正确读取游戏的所有属性。但是,在本例中,您可以看到homescore和awayscore在输入分数之前仅显示为“”。这很好,因为我想放一个简单的if语句,说if score是null echo“-”。这样,观众就知道他们还没有开始玩 <Fixture Id="404" FixtureName="Round 4" ResourceId="4

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

我正在尝试读取作为体育日程安排程序一部分的xml

下面是我正在阅读的XML示例。到目前为止,使用simpmlexml,我已经能够正确读取游戏的所有属性。但是,在本例中,您可以看到homescore和awayscore在输入分数之前仅显示为“”。这很好,因为我想放一个简单的if语句,说if score是null echo“-”。这样,观众就知道他们还没有开始玩

<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比较陌生,可以使用empty()函数

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

如果我理解正确,您需要区分
“0”
。因为PHP尽其所能猜测您正在比较的类型,所以像
$foo==0
$foo==''
这样的语句不会这样做,因为它会猜测您想要比较数字,并将
''
视为
0

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

  • 使用
    ==
    运算符代替
    =
    (或
    !==
    代替
    !=
    )(请参阅)
  • 使用
    strlen
    检查字符串的长度,查看其是否为空
  • 使用
    is_int
    is_string
    等检查变量的类型-如果您从SimpleXML中获取了返回其自身类型的值,则此变量可能不起作用
由于您使用的是SimpleXML,我认为代码应该是这样的:

if ( (string)$fixture['HomeTeamScore'] === '' )
{
    echo '-';
}
else
{
    echo (string)$fixture['HomeTeamScore'];
}

PHP没有强类型。所以有时候会发生这样的事情。可以使用gettype()函数检查变量的类型。我以为那是你想要的。对不起,我不太明白你的问题