WernerK: Unterschiede von Array ermitteln

Hallo,

irgendwie steht ich gerade auf dem Schlauch 😀 Ich möchte gerne zwei Arrays vergleichen und ermitteln ob Werte hinzugefügt wurden oder entfernt.

$arr1 = array('Haus');
$arr2 = array('Haus', 'Auto');

Also angenommen im Array1 steht Haus als Default. Jemand fügt über eine Eingabe einen Wert hinzu, also jetzt Auto. Jetzt möchte ich herausbekommen, dass Auto der neue hinzugefügte Wert ist.

Umgekehrt: Jetzt ist der neue Default Wert also Haus und Auto. Nun möchte jemand über ein Formular (wie auch immer) Auto löschen. Jetzt möchte ich herausbekommen, dass Auto gelöscht wurde.

Ich denke allein mit array_diff oder intersect kommt man hier nicht weiter oder?

Gruss

Werner

  1. Tach!

    irgendwie steht ich gerade auf dem Schlauch 😀 Ich möchte gerne zwei Arrays vergleichen und ermitteln ob Werte hinzugefügt wurden oder entfernt.

    Solch eine History wird nicht geführt. Du kannst nur Differenzen ermitteln. Dazu eignen sich die Mengen-Funktionen für Arrays. Davon gibt es so einige, mit diff und intersect im Namen.

    Ich denke allein mit array_diff oder intersect kommt man hier nicht weiter oder?

    Ach, die hast du ja schon gefunden.

    Also angenommen im Array1 steht Haus als Default. Jemand fügt über eine Eingabe einen Wert hinzu, also jetzt Auto. Jetzt möchte ich herausbekommen, dass Auto der neue hinzugefügte Wert ist.

    Wer soll denn dieser Jemand sein, wenn nicht der Code, den du ausführst?

    Jetzt ist der neue Default Wert also Haus und Auto. Nun möchte jemand über ein Formular (wie auch immer) Auto löschen. Jetzt möchte ich herausbekommen, dass Auto gelöscht wurde.

    Das Formular auswerten, bevor die Änderung stattfindet, ist keine Option? Damit hast du jedenfalls, was passieren soll und genau das wird wohl auch passiert sein, nach Bearbeitung des Arrays.

    dedlfix.

  2. hallo

    Ich denke allein mit array_diff oder intersect kommt man hier nicht weiter oder?

    Wenn du zuerst ein intersect durchführst und das Ergebnis in array3 speicherst...

    Dann kannst du

    a) array_diff(array1,array3) b) array_diff(array2,array3)

    anwenden, um zuerfahren was a) inzwischen gelöscht und b) inzwischen neu hinzugekommen ist.