Tatortreiniger: PHP Logik: Zwei JSON mit Sendedaten vergleichen und Differenzen aufzeigen!?

Liebe Community,

ich habe zwei JSON Datein:

  1. Meine JSON Sendezeiten (exportiert aus meinen Daten) besteht aus timestamp, sender, titel
  2. Externe JSON Sendezeiten bestehend aus timestamp, sender, titel

Beispiel:

    {
        "Timestamp": "1709586000",
        "Datum": "04.03.2024",
        "Uhrzeit": "22:00",
        "Sender": "HR",
        "Titel": "hessenschau"
    },

Ich möchte nun meine Json mit der externen JSON vergleichen und Änderungen/Neu Daten angezeigt bekommen. Ich dache zuerst ich könnte mich an dem Titel festhalten. Doch da gibt es z.B. die Tagesschau die mehrfach täglich auf verschiedenen Sendern läuft. Mein zweiter Gedanke war ich erstelle eine Art "HASH" für einen Datensatz zu erstellen, so kann ich einfacher vergleichen.

Aber jetzt habe ich einen großen Knoten im Kopf. Wie kann das vergleichen realisieren?

array_diff_key?

Sicher habt Ihr da bessere Ideen die Datensätze zu vergleichen.

Euer Tatortreiniger

  1. Doch da gibt es z.B. die Tagesschau die mehrfach täglich auf verschiedenen Sendern läuft.

    Und nicht nur das. Bei vielen Sendern läuft das Abendprogramm so 2 bis 3x durch...

    Das sieht für mich so aus, als wäre Dein Vorhaben nicht so einfach realisierbar.

    Wenn also "Hump haut Lump" um 20:15, 23:15 und 02:15 laufen sollte, dann sähe Dein erstes Json so aus:

    [ 
      {
    	 "Titel": "Hump haut Lump",
    	 "Timestamp": 1709579700,
    	 "Sender": "RotzTV"
      },
      {
    	 "Titel": "Hump haut Lump",
    	 "Timestamp": 1709586900,
    	 "Sender": "RotzTV"
      },
      {
    	 "Titel": "Hump haut Lump",
    	 "Timestamp": 1709601300,
    	 "Sender": "RotzTV"
      }  
    ]
    

    Durch eine Ansprache über eine völlig neue Zahnpaste vom großen Willi verschieben sich die Sendungen (zweites JSON) um 4 Minuten und 30 Sekunden

    [ 
      {
    	 "Titel": "Ansprache von großen Willi",
    	 "Timestamp": 1709579700,
    	 "Sender": "RotzTV"
      }
      {
    	 "Titel": "Hump haut Lump",
    	 "Timestamp": 1709579970,
    	 "Sender": "RotzTV"
      },
      {
    	 "Titel": "Hump haut Lump",
    	 "Timestamp": 1709587170,
    	 "Sender": "RotzTV"
      },
      {
    	 "Titel": "Hump haut Lump",
    	 "Timestamp": 1709601570,
    	 "Sender": "RotzTV"
      }  
    ]
    

    Was willst Du da wie vergleichen? Da ist zu wenig eindeutiges drin. Aber das führt auch zu folgender Frage:

    Ich möchte nun meine Json mit der externen JSON vergleichen und Änderungen/Neu Daten angezeigt bekommen.

    Dann bau mal dafür einen Regelsatz dafür, wie Du eine Sendungs-ID ermittelst. Die könnte aus Sender, Titel, Wiederholungsnummer bestehen:

    [ 
      {
    	 "Titel": "Hump haut Lump",
       "Wiederholung": 0,
    	 "Timestamp": 1709579700,
    	 "Sender": "RotzTV"
      },
      {
    	 "Titel": "Hump haut Lump",
       "Wiederholung": 1,
    	 "Timestamp": 1709586900,
    	 "Sender": "RotzTV"
      },
      {
    	 "Titel": "Hump haut Lump",
       "Wiederholung": 2,
    	 "Timestamp": 1709601300,
    	 "Sender": "RotzTV"
      }  
    ]
    

    oder eben:

    [ 
      {
       "ID": "RotzTV:0:Hump haut Lump",
    	 "Titel": "Hump haut Lump",
    	 "Timestamp": 1709579700,
    	 "Sender": "RotzTV"
      },
      {
       "ID": "RotzTV:1:Hump haut Lump",
    	 "Titel": "Hump haut Lump",
    	 "Timestamp": 1709586900,
    	 "Sender": "RotzTV"
      },
      {
       "ID": "RotzTV:2:Hump haut Lump",
    	 "Titel": "Hump haut Lump",
    	 "Timestamp": 1709601300,
    	 "Sender": "RotzTV"
      }  
    ]
    

    (Auf den zweiten verzichte ich mal)

    Pass aber auf, dass Du die „Sendungs-ID“ aus nach Timestamp sortierten Arrays bekommst. Auch brauchts Du dann Regeln, was z.B. geschehen soll, wenn Sendungen eingefügt werden und dafür Wiederholungen entfernt bzw. gegen kürzere Werbesendungsfüllpausen ausgetauscht werden.