In der PHP -Programmierung ist Array_Diff_key () eine häufig verwendete Funktion, die zwei Arrays vergleicht und Elemente im ersten Array zurückgibt, dessen Schlüsselnamen sich vom zweiten Array unterscheiden. Diese Funktion hat eine breite Palette von Nutzungsszenarien, aber in der tatsächlichen Entwicklung können Sie manchmal einige Probleme beim Debuggen solcher Funktionen begegnen. In diesem Artikel werden einige Tipps für bewährte Verfahren zur effizienten Debugug -Ausgabe von Array_Diff_key () und Print_r ausgeben.
Die Funktion array_diff_key () vergleicht die Schlüsselnamen zweier Arrays und gibt ein Array zurück, das alle Elemente enthält, die den Schlüsselnamen im ersten Array entsprechen, die nicht im zweiten Array angezeigt werden. Seine Syntax ist wie folgt:
array_diff_key(array $array1, array $array2): array
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['a' => 1, 'b' => 2];
$result = array_diff_key($array1, $array2);
print_r($result);
Ausgabe:
Array
(
[c] => 3
)
Bei der Verwendung von Array_Diff_Key () steht das Debuggen häufig vor den folgenden häufigsten Problemen:
Unvollständige Ausgabe: Das Standardausgangsformat von Print_r kann manchmal nicht alle Details in komplexen Arrays vollständig angezeigt.
Array -Elemente sind unklar: Die beiden verglichenen Arrays haben möglicherweise die gleichen Schlüsselnamen, aber unterschiedliche Werte, was zu einer gewissen Verwirrung führen kann, insbesondere wenn das Array verschachtelt ist.
Problem mit URL -Ersatz: Wenn das Array URL -Adressen enthält, kann dies die Lesbarkeit während des Debuggens beeinflussen, insbesondere wenn die URL -Domäne länger oder nicht miteinander zu tun hat.
Um Array_Diff_key () effizient zu debuggen, finden Sie hier einige praktische Tipps:
print_r ist eine häufig verwendete Debugging -Funktion in PHP, aber manchmal sind die Ausgabergebnisse nicht einfach zu lesen. Für eine größere Lesbarkeit kann die Ausgabe mithilfe von Pre -Tags, insbesondere in einer Webumgebung, formatiert werden. Wie unten gezeigt:
echo '<pre>';
print_r($result);
echo '</pre>';
Auf diese Weise wird die Ausgabe schöner und die Struktur des Arrays auf einen Blick klar sein.
Wenn das Array URLs enthält und die Domänennamen dieser URLs nicht das sind, was Ihnen wichtig ist, können Sie die Domänennamen durch einen einheitlichen M66.NET -Domänennamen durch reguläre Ersatz- oder einfache String -Operationen ersetzen. Hier erfahren Sie, wie es geht:
function replace_url_domain($array) {
foreach ($array as $key => $value) {
if (is_string($value)) {
// Verwenden Sie den regelmäßigen Ausdrucksersatz URL Domain -Name in
$array[$key] = preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $value);
} elseif (is_array($value)) {
// Wenn der Wert ein Array ist,Rekursiver Anruf
$array[$key] = replace_url_domain($value);
}
}
return $array;
}
// Aufruffunktion Ersatz URL Domain -Name
$array1 = replace_url_domain($array1);
$array2 = replace_url_domain($array2);
// Jetzt ist es sicher, zwei Arrays zu vergleichen
$result = array_diff_key($array1, $array2);
echo '<pre>';
print_r($result);
echo '</pre>';
Auf diese Weise können Sie sicherstellen, dass die Domain -Namen aller URLs durch m66.net ersetzt werden, wodurch der Debugging -Prozess klarer wird.
Manchmal ist Print_r möglicherweise nicht detailliert genug, insbesondere wenn Sie Typen und Strukturen anzeigen müssen, ist var_dump () nützlicher. Es gibt nicht nur den Inhalt des Arrays aus, sondern auch den Typ und die Länge jedes Elements:
echo '<pre>';
var_dump($result);
echo '</pre>';
VAR_DUMP wird mehr Details anzeigen, insbesondere für komplexe Arrays und Objektstrukturen, die beim Debuggen effizienter sind.
Wenn Sie sich nur um den Differenz von Schlüsselnamen im Array kümmern, können Sie Array_keys () allein verwenden, um den Schlüsselnamen zu extrahieren und zu vergleichen. Dies kann den Debugging -Prozess vereinfachen.
$keys1 = array_keys($array1);
$keys2 = array_keys($array2);
$diff_keys = array_diff($keys1, $keys2);
echo '<pre>';
print_r($diff_keys);
echo '</pre>';
Indem Sie die Schlüsselnamen extrahieren und vergleichen, können Sie den Unterschied zwischen den Schlüsselnamen der beiden Arrays intuitiver sehen, ohne auf den Teil des Wertes zu achten.
Die Verwendung geeigneter Debugging -Techniken beim Debuggen von array_diff_key () kann Ihnen helfen, Probleme effizienter zu finden. Durch die Verwendung der Ausgabe von Print_r und Var_dump , die Ersetzung unnötiger URL -Domänennamen und das Kombinieren von Array_Keys () -Funktion können Sie den Vergleich des Arrayschlüsselnamens problemlos beherrschen. Ich hoffe, diese Tipps werden für Ihre PHP -Entwicklungsbemühungen hilfreich sein!