Aktueller Standort: Startseite> Neueste Artikel> ARRAY_DIFF_ASSOC -Funktion Praktisches Tutorial: Wie erkennt ich geänderte Felder in Benutzerformularen?

ARRAY_DIFF_ASSOC -Funktion Praktisches Tutorial: Wie erkennt ich geänderte Felder in Benutzerformularen?

gitbox 2025-07-26

In der Webentwicklung müssen sie, wenn Benutzer Formulare einreichen, häufig die übermittelten Daten mit den Originaldaten vergleichen, insbesondere im Szenario zur Änderung von Benutzerinformationen. Zum Beispiel hat der Benutzer seine persönlichen Daten geändert, und wir möchten feststellen, welche Felder geändert wurden. Die von PHP bereitgestellte Funktion array_diff_assoc () kann uns helfen, diese Aufgabe leicht zu erledigen. Heute lernen wir, wie Sie diese Funktion verwenden, um geänderte Felder in einer Form in einem praktischen Fall zu erkennen.

1. Was ist die Funktion array_diff_assoc () ?

Mit der Funktion array_diff_assoc () wird die Differenz zwischen zwei Arrays berechnet, basierend auf dem Vergleich von Schlüsselnamen und Schlüsselwerten. Es gibt ein Element zurück, das im ersten Array enthalten ist, jedoch nicht im zweiten Array. Es ist zu beachten, dass es nicht nur die Werte des Arrays vergleicht, sondern auch die Schlüsselnamen des Arrays vergleicht, sodass es strenger ist als Array_Diff () .

Funktionsprototyp:

 <span><span><span class="hljs-title function_ invoke__">array_diff_assoc</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array2</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
  • $ Array1 : Das erste Array.

  • $ array2 : Das zweite Array.

  • Rückgabewert: Ein Array, das alle Elemente in $ array1 enthält, die sich von $ array2 unterscheiden.

2. Praktische Anwendungsszenarien

Angenommen, wir haben ein Formular, in dem Benutzer Informationen ändern, und die vom Benutzer übermittelten Informationen enthält Felder wie Name, E -Mail, Telefonnummer usw. Wir hoffen, die ursprünglichen Benutzerdaten mit den übermittelten Formulardaten zu vergleichen, um festzustellen, welche Felder geändert wurden.

3. Beispielcode

Schritt 1: Definieren Sie die Originaldaten und die vom Benutzer übermittelten Daten

Definieren Sie zunächst ein Array, das die ursprünglichen Daten des Benutzers und ein Array mit den übermittelten Daten des Benutzers enthält.

 <span><span><span class="hljs-comment">// Angenommen, dies sind die ursprünglichen Benutzerinformationen, die in der Datenbank gespeichert sind</span></span><span>
</span><span><span class="hljs-variable">$original_data</span></span><span> = [
    </span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'John Doe'</span></span><span>,
    </span><span><span class="hljs-string">'email'</span></span><span> =&gt; </span><span><span class="hljs-string">'[email protected]'</span></span><span>,
    </span><span><span class="hljs-string">'phone'</span></span><span> =&gt; </span><span><span class="hljs-string">'123-456-7890'</span></span><span>
];

</span><span><span class="hljs-comment">// Angenommen, dies ist die vom Benutzer übermittelten geänderten Formulardaten</span></span><span>
</span><span><span class="hljs-variable">$submitted_data</span></span><span> = [
    </span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'John Doe'</span></span><span>,  </span><span><span class="hljs-comment">// Der Name wurde nicht geändert</span></span><span>
    </span><span><span class="hljs-string">'email'</span></span><span> =&gt; </span><span><span class="hljs-string">'[email protected]'</span></span><span>,  </span><span><span class="hljs-comment">// Die E -Mail -Adresse wurde geändert</span></span><span>
    </span><span><span class="hljs-string">'phone'</span></span><span> =&gt; </span><span><span class="hljs-string">'123-456-7890'</span></span><span>  </span><span><span class="hljs-comment">// Die Telefonnummer wurde nicht geändert</span></span><span>
];
</span></span>

Schritt 2: Verwenden Sie array_diff_assoc (), um die Daten zu vergleichen

Verwenden Sie als nächstes Array_Diff_assoc () , um die Originaldaten zu vergleichen und Daten zu übermitteln, um herauszufinden, welche Felder geändert wurden.

 <span><span><span class="hljs-comment">// verwenden array_diff_assoc Finden Sie die modifizierten Felder</span></span><span>
</span><span><span class="hljs-variable">$changed_fields</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_diff_assoc</span></span><span>(</span><span><span class="hljs-variable">$submitted_data</span></span><span>, </span><span><span class="hljs-variable">$original_data</span></span><span>);

</span><span><span class="hljs-comment">// Ausgabe modifizierte Felder</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$changed_fields</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Modifizierte Felder sind:\n"</span></span><span>;
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$changed_fields</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> =&gt; </span><span><span class="hljs-variable">$value</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$key</span></span></span><span>: </span><span><span class="hljs-subst">$value</span></span><span>\n";
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Keine Felder werden geändert。\n"</span></span><span>;
}
</span></span>

Ausgangsergebnis:

 <span><span>Modifizierte Felder sind:
</span><span><span class="hljs-symbol">email</span></span><span><span class="hljs-punctuation">:</span></span><span> john.doe</span><span><span class="hljs-meta">@newdomain</span></span><span>.com
</span></span>

4. Erklärung

  • In diesem Beispiel vergleicht Array_diff_assoc () die Schlüssel und Werte der Arrays für ordnungsgemäße und original_data .

  • Da sich der Name und die Telefonnummer nicht geändert haben, wird nur das Postfachfeld als unterschiedlich angesehen, sodass die Ausgabergebnisse angezeigt werden, dass das E -Mail -Feld geändert wurde.

5. Optimierung: Erkennen Sie, ob der Benutzer eine Änderung eingereicht hat

Nehmen wir an, dass wir neben der Erkennung modifizierter Felder auch wissen möchten, ob der Benutzer eine Änderung im Formular eingereicht hat. Wenn bestimmte Felder nicht in den Originaldaten vorhanden sind, sondern in den eingereichten Daten, können sie anhand der Kombination von Array_Diff_assoc () und array_diff_key () gemessen werden.

 <span><span><span class="hljs-comment">// verwenden array_diff_key Um festzustellen, ob der Benutzer ein neues Feld eingereicht hat</span></span><span>
</span><span><span class="hljs-variable">$new_fields</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_diff_key</span></span><span>(</span><span><span class="hljs-variable">$submitted_data</span></span><span>, </span><span><span class="hljs-variable">$original_data</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$new_fields</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Neue Felder eingereicht:\n"</span></span><span>;
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$new_fields</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> =&gt; </span><span><span class="hljs-variable">$value</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$key</span></span></span><span>: </span><span><span class="hljs-subst">$value</span></span><span>\n";
    }
}
</span></span>

6. Zusammenfassung

array_diff_assoc () ist eine sehr praktische Funktion, mit der wir leicht erkennen können, welche Felder in dem vom Benutzer eingereichten Formular geändert wurden. In der tatsächlichen Entwicklung wird diese Funktion häufig in Szenarien wie der Änderung der Benutzerdaten und der Auftragsänderung verwendet, um sicherzustellen, dass wir Änderungen genau verfolgen können.

Mit den oben genannten Beispielen können Sie die Funktion des Vergleichs von Rohdaten mit benutzergerichteten Daten schnell implementieren, wodurch Sie die Benutzereingabe- und Formularüberprüfung besser verarbeiten können.