2012-06-08 18 views
0

嗨,大家好希望你能幫助:SimpleXML的問題不能從空屬性得到空

我試圖讀取XML是一個體育調度計劃的一部分。

我在閱讀XML的示例下面。到目前爲止,使用Simpmle XML,我已經能夠正確讀取遊戲的所有屬性。然而在這個例子中,你可以看到比分和awayscore只會顯示爲「」,直到輸入比分。這很好,因爲我想把一個簡單的if語句說成score是否爲空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

+0

PHP沒有強類型。因此有時候會發生這樣的事情。你可以使用gettype()函數來檢查你的變量是什麼類型。 [這裏是gettype文檔的鏈接](http://www.php.net/manual/en/function.gettype.php) – robonerd

回答

0

您可以使用empty()函數。

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

PHP: empty - Manual

+0

沒有運氣,它只是使空和0一個「 - 」 –

+0

認爲這就是你通緝。我不太理解你的問題,對不起。 :) – thedeedawg

0

如果我理解正確的話,你想"""0"區分。由於PHP盡力猜出您正在比較的是哪種類型,因此像$foo == 0$foo == ''這樣的語句不會執行此操作,因爲它會猜測您要比較數字,並將""視爲0

有一對夫婦的方式來解決這個問題:

  • 使用===操盤==(或!==代替!=)(見http://uk3.php.net/manual/en/language.operators.comparison.php)使用strlen字符串的長度
  • 檢查看看它是否爲空
  • 檢查變量的類型使用is_int,is_string等 - 如果您已將值從SimpleX中提取出來,則此方法可能不起作用ML,由於您使用的SimpleXML返回自己的類型

,我會想象的代碼看起來是這樣的:

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