2016-08-23 31 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