2016-08-16 1 views
0

ich zwei JSON-Datei haben, und sie synchronisieren müssen, wenn Änderungen gefunden, unten ist meine JSON-Datei,Vergleichen Sie zwei JSON-Datei mit leeren Wert

enter image description here

ist Elternteil (P) und ein anderer

enter image description here

ist Kind (C),

Hier ist mein Code:

 foreach ($localJson->PushNotification as $key => $data) { 

      foreach ($this->news as $news) { 
       if($news->pushMessageId == $data->pushMessageId){ 

        if($news->Image != "" && $news->Image != $data->Image){ 
         echo "new image found <br />"; 
        } 
        if($news->documentFile != "" && $news->documentFile != $data->documentFile){ 
         echo "new documentFile found <br />"; 
        } 
        if($news->categoryIcon != "" && $news->categoryIcon != $data->categoryIcon){ 
         echo "new categoryIcon found <br />"; 
        } 
       } 
      } 
     } 

Das Problem ist, jedes Mal, wenn es Schleifen, es Verwerfungs vorherige Schleife Wert doesent, wenn Strom

Für Ex leer sein gefunden: 1. Schleife 1653 pushMessageId pdf und Updates in Kind vergleicht, aber für wieder nächste pushMessageId Es wird dasselbe PDF zum Vergleichen benötigt, anstatt ein leeres Feld zu verwenden.

Antwort

0

Ich habe überprüfen Sie Ihren Code, sein Aussehen eine einfache logische Bedingung und müssen aktuelle Objekte neuen Wert zu aktualisieren.

foreach ($localJson->PushNotification as $key => $data) { 

     foreach ($this->news as $news) { 
      if($news->pushMessageId == $data->pushMessageId){ 

       if($news->Image != "" && $news->Image != $data->Image){ 
        $data->Image = $news->Image; 
       } 
       if($news->documentFile != "" && $news->documentFile != $data->documentFile){ 
        $data->documentFile = $news->documentFile; 
       } 
       if($news->categoryIcon != "" && $news->categoryIcon != $data->categoryIcon){ 
        $data->categoryIcon = $news->categoryIcon; 
       } 
      } 
     } 
    } 

Ich hoffe, dass diese Lösung für Sie arbeiten kann.

Verwandte Themen