2016-08-23 43 views
2

我的問題是,一旦我的PHP變量用於第一次,相同的值在每一個循環顯示出來,雖然它是uncorrect:爲PHP相同的結果,如果裏面的foreach

$json_matches=file_get_contents('url'); 
$matches = json_decode($json_matches,true); 

//json results 
foreach($matches as $object) 

//filter results 
if ($object['season'] == $season && $object['localteam_id'] == $hteam) { 

    //add up localteam and visitorteam goals 
    $goals_match=$object['localteam_score']+$object['visitorteam_score']; 

     //check if result is larger than 4 and save value to variable 
     if($goals_match > 4) $goals_p4=1; 

    echo $object['id']." ". $goals_p4; 

    }  

一旦因爲我對$goals_match > 4的正確結果1正確顯示。但在我的下一個結果中,無論錯誤還是正確,1都會一次又一次地出現。

我已經在這裏查了幾篇文章,但還沒有找到任何提示來解決這個問題。如果你能在這裏幫助我會很棒!

非常感謝!

+0

代替'$ goals_p4 = 1;'直接使用'echo'1';'。你也可以顯示這個完整的代碼,因爲你的代碼不是完整的 –

+0

這是可行的,但我需要變量中的'1'來計算。那是不可能的,對吧? – vloryan

+0

首先可以請您添加括號,以便消除歧義。我無法理解foreach在哪裏結束,如果條件結束,首先在哪裏 –

回答

1

發生這種情況是因爲您沒有重置或重新初始化變量$goals_p4,因爲它保留了該值。

固定,這將是下面的一種方式,但你不說出了$ goals_p4的默認值應該是什麼,或者如果該值應保存在某個地方:的

$json_matches=file_get_contents('url'); 
$matches = json_decode($json_matches,true); 

//json results 
foreach($matches as $object) 
{ 
    //filter results 
    if ($object['season'] == $season && $object['localteam_id'] == $hteam) 
    { 
    $goals_p4 = ''; // reset to it is blank for each loop 

    //add up localteam and visitorteam goals 
    $goals_match=$object['localteam_score']+$object['visitorteam_score']; 

    //check if result is larger than 4 and save value to variable 
    if($goals_match > 4) 
    { 
     $goals_p4=1; // will only be set to 1 if the $goals_match is over 4, if not it will remain default 
    } 

    echo $object['id']." ". $goals_p4; // $goals_p4 will either be 1 or blank 

    }  

} 
+0

非常感謝!這有幫助! – vloryan

+0

可能值得注意的是,如果您在開發時注意到警告已打開,如果您通過提供的信息運行原始代碼並獲得'$ goals_match' <= 4的信息,那麼您會收到關於未定義變量的警告,其依據爲您發佈的代碼。一旦它被初始化爲某種東西,它就會被定義。 – gabe3886