2016-03-11 4 views
0

У меня есть два разных файла JSON и вы хотите распечатать сообщение, если 2 узла имеют одинаковый номер версии. Однако, когда ревизия одинакова для 2 узлов, мой код не проходит через условное. Я даже включил операторы печати, чтобы убедиться, что оба номера ревизий одинаковы. Вот мой код:Условное заявление PHP не работает

foreach($xml_2->logentry as $node2): 
      $revision_log = $node2[0]['revision']; 
      print "revision: "; 
      print $revision; 
      echo "<br>"; 
      print "revision_log: "; 
      print $revision_log; 
      echo "<br>"; 

      if ($revision_log == $revision){ 
       print "Got inside of if statement"; 
       $msg = $node2->msg; 
       print "msg: "; 
       print $msg; 
       echo "<br>"; 
      } 
     endforeach; 

Вот некоторые из выхода:

revision_log: 5066 
revision: 1282 
revision_log: 3757 
revision: 1282 
revision_log: 3756 
revision: 1282 
revision_log: 1285 
revision: 1282 
revision_log: 1282 
revision: 1282 
revision_log: 1247 
revision: 1282 
revision_log: 1140 

Теперь, при пересмотре 1282, код должен перейти в мой условна, но это не так. Кто-нибудь знает, почему? «Внутри оператора if» никогда не печатается.

+2

http://php.net/manual/en/function.error-reporting.php Невозможно определить, где определена '$ revision'. –

ответ

0

Я не знал, что переменная $ revision является строкой. Я объявил это так же, как $ revision_log. JSON, должно быть, был другим. Я просто преобразовал $ revision в переменную int, и теперь все работает.

foreach($xml_2->logentry as $node2): 
      $revision_log = $node2[0]['revision'];              
      $revision_int = (int) $revision; 
      if ($revision_log == $revision_int){ 
       $msg = $node2->msg; 
       print "Commit Message: "; 
       print $msg; 
       echo "<br>"; 
      } 
endforeach; 
Смежные вопросы