Aktueller Standort: Startseite> Neueste Artikel> Wie man mit Schlüsselnamen in einem Array als Ganzzahlen und Saiten umgeht

Wie man mit Schlüsselnamen in einem Array als Ganzzahlen und Saiten umgeht

M66 2025-05-15

In PHP können die Schlüssel eines Arrays Ganzzahlen oder Saiten sein. Wenn wir an Arrays arbeiten, insbesondere beim Vergleich von Array -Unterschieden, ist es besonders wichtig, diese beiden Tastenarten korrekt zu unterscheiden. In diesem Artikel wird untersucht, wie die Funktion von PHP von Array_Diff_Uassoc () verwendet wird, um diese Situation zu bewältigen und zu zeigen, wie Unterschiede mit Differenzen umgehen, wenn Schlüsselnamen Ganzzahlen und Zeichenfolgen sind.

1. Einführung in die Funktion array_diff_uassoc

Die Funktion von PHP von Array_Diff_Uassoc () ist eine Funktion, die zwei oder mehr Arrays vergleichen und die Unterschiede zwischen ihnen zurückgeben kann. Es wird nicht nur basierend auf Array -Werten verglichen, sondern ermöglicht es Entwicklern auch, Funktionen anzupassen, die Arrayschlüsselnamen vergleichen.

Funktionsprototyp:

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $ array1 : Das erste Array, das verglichen wird.

  • $ array2 : Das zweite Array, das verglichen werden muss.

  • $ key_compare_func : Eine Rückruffunktion für den benutzerdefinierten Schlüsselnamenvergleich.

Diese Funktion gibt ein neues Array zurück, das die Elemente in $ array1 enthält, die nicht in $ array2 erscheinen. Es ist erwähnenswert, dass diese Funktion nicht nur die Werte des Arrays vergleicht, sondern auch die Schlüssel des Arrays vergleicht.

2. Unterschied zwischen dem Schlüsselnamen Ganzzahl und der Zeichenfolge

In PHP gibt es einige subtile Unterschiede, wenn die Schlüssel eines Arrays Ganzzahlen sind und wenn die Schlüssel Strings sind. Zum Beispiel wird Taste 0 und Schlüssel '0' gleich aussehen. PHP betrachtet sie als unterschiedliche Schlüssel. Für Vergleiche zwischen numerischen Tasten und String -Tasten kann Array_Diff_Uassoc () uns helfen, diesen Unterschied besser zu kontrollieren.

Beispielcode:

Angenommen, wir haben die folgenden zwei Arrays:

 $array1 = [
    0 => 'apple',
    '1' => 'banana',
    'orange' => 'orange'
];

$array2 = [
    0 => 'apple',
    1 => 'banana',
    'orange' => 'orange'
];

In diesem Beispiel haben $ array1 und $ array2 zwei identische Werte ('Apple' und 'Banane'), aber ihre Schlüssel sind nicht genau gleich. Der Schlüssel '1' in $ array1 ist eine Zeichenfolge, während der Schlüssel 1 in $ array2 eine Ganzzahl ist.

3. verwenden

Damit PHP Schlüssel dieser Arrays entsprechend unseren Anforderungen vergleichen kann, können Sie eine benutzerdefinierte Funktionsvergleichsfunktion verwenden. Wenn wir beispielsweise die numerischen Tasten und Zeichenfolgenschlüssel als gleich betrachten möchten, können wir eine Vergleichsfunktion erstellen, die sie in einen gleichmäßigen Vergleich in einen einheitlichen Typ umwandelt.

Vergleichsfunktion des benutzerdefinierten Schlüsselnamens

Wir können eine einfache Rückruffunktion verwenden, um alle Schlüssel einheitlich in Zeichenfolgentypen umzuwandeln und dann zu vergleichen:

 function key_compare_func($a, $b) {
    return strcmp((string)$a, (string)$b);
}

Vergleichsarrays mit Array_Diff_Uassoc

Jetzt verwenden wir array_diff_uassoc () , um die beiden Arrays zu vergleichen und die Unterschiede zwischen ihnen zu sehen:

 <?php
$array1 = [
    0 => 'apple',
    '1' => 'banana',
    'orange' => 'orange'
];

$array2 = [
    0 => 'apple',
    1 => 'banana',
    'orange' => 'orange'
];

function key_compare_func($a, $b) {
    return strcmp((string)$a, (string)$b);
}

$result = array_diff_uassoc($array1, $array2, 'key_compare_func');

print_r($result);
?>

Ergebnisanalyse

Nach der Ausführung des oben genannten Code wird $ Ergebnis ausgegeben:

 Array
(
    [orange] => orange
)

Wie Sie sehen können, unterscheiden sich PHP jedoch in Schlüsseltypen (String vs. Intagers), obwohl $ array1 und $ array2 in Schlüsseltypen (String vs. Intagers) unterscheiden, wie der gleiche Schlüssel über die Funktion array_diff_uassoc () und unsere benutzerdefinierte Tastaturname -Vergleichsfunktion. Das Endergebnis gibt den Wert zurück, der dem Schlüssel 'Orange' entspricht.

4. Zusammenfassung

Der Unterschied zwischen Schlüsselnamen als Ganzzahlen und Zeichenfolgen kann bei der Arbeit mit PHP -Arrays zu Verwirrung führen. Wir können dieses Problem jedoch leicht mit Array_Diff_Uassoc () und einer Vergleichsfunktion für benutzerdefinierte Schlüsselname lösen. Indem wir diese Funktion vernünftigerweise verwenden, können wir das Vergleichsverhalten von Arrayschlüsselnamen genau steuern, um sicherzustellen, dass unser Programm wie erwartet Array -Operationen ausführen kann.

Durch die Verwendung von Array_Diff_Uassoc () können Sie flexiblere Array -Differenzvergleiche erzielen, insbesondere angesichts der inkonsistenten Arrayschlüsselnamen -Typen, die potenzielle Fehler effektiv vermeiden können.