Die Funktion array_intersect_key wird verwendet, um Schlüsselnamen mehrerer Arrays zu vergleichen und Elemente mit denselben Schlüsselnamen zurückzugeben. Es vergleichen nicht die Werte des Arrays, sondern stimmt nur nach dem Schlüsselnamen überein.
<span><span><span class="hljs-title function_ invoke__">array_intersect_key</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><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ array1 : Das erste Array, das zum Vergleich mit anderen Arrays verwendet wird.
$ array2 : Das zweite Array, das die Schlüssel enthält, die mit $ Array1 verglichen werden sollen.
Zusätzliche Arrays (optional): Für mehrere Vergleiche können mehrere Arrays übergeben werden.
Gibt ein Array zurück, das alle Elemente mit demselben Schlüsselnamen wie andere Arrays enthält.
<span><span><span class="hljs-variable">$array1</span></span><span> = [
</span><span><span class="hljs-string">'a'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>,
</span><span><span class="hljs-string">'b'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'c'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>
];
</span><span><span class="hljs-variable">$array2</span></span><span> = [
</span><span><span class="hljs-string">'a'</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>,
</span><span><span class="hljs-string">'b'</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>,
</span><span><span class="hljs-string">'d'</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>
];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>
Ausgabe:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[a] => </span><span><span class="hljs-number">1</span></span><span>
[b] => </span><span><span class="hljs-number">2</span></span><span>
)
</span></span>
In diesem Beispiel vergleicht Array_intersect_key die Schlüsselnamen von $ array1 und $ array2 und gibt Elemente mit denselben Schlüsselnamen zurück: 'A' und 'B' .
Ähnlich wie bei Array_intersect_key wird Array_intersect_Ukey auch verwendet, um basierend auf den Schlüsselnamen des Arrays zu vergleichen. Der einzige Unterschied besteht darin, dass Sie eine benutzerdefinierte Rückruffunktion bereitstellen können, um benutzerdefinierte Vergleiche für Schlüsselnamen durchzuführen.
<span><span><span class="hljs-title function_ invoke__">array_intersect_ukey</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">callable</span></span><span> </span><span><span class="hljs-variable">$key_compare_func</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> ...</span><span><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ array1 : Das erste Array, das zum Vergleich mit anderen Arrays verwendet wird.
$ array2 : Das zweite Array, das die Schlüssel enthält, die mit $ Array1 verglichen werden sollen.
$ key_compare_func : benutzerdefinierte Rückruffunktion zum Vergleichen von Schlüsselnamen. Diese Funktion nimmt zwei Schlüsselnamen als Parameter auf und gibt einen Ganzzahlwert zurück: Wenn der erste Schlüssel geringer ist als der zweite Taste, gibt sie eine negative, null- oder positive Zahl zurück.
Zusätzliche Arrays (optional): Für mehrere Vergleiche können mehrere Arrays übergeben werden.
Gibt ein Array zurück, das alle Elemente enthält, die den benutzerdefinierten Tschlüsselnamenvergleichsfunktionsbedingungen entsprechen.
<span><span><span class="hljs-variable">$array1</span></span><span> = [
</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>,
</span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'cherry'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>
];
</span><span><span class="hljs-variable">$array2</span></span><span> = [
</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>,
</span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>,
</span><span><span class="hljs-string">'date'</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>
];
</span><span><span class="hljs-variable">$key_compare_func</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$key1</span></span></span><span>, </span><span><span class="hljs-variable">$key2</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcasecmp</span></span><span>(</span><span><span class="hljs-variable">$key1</span></span><span>, </span><span><span class="hljs-variable">$key2</span></span><span>); </span><span><span class="hljs-comment">// Vergleichsfall ignorieren</span></span><span>
};
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_ukey</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>, </span><span><span class="hljs-variable">$key_compare_func</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>
Ausgabe:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[apple] => </span><span><span class="hljs-number">1</span></span><span>
[banana] => </span><span><span class="hljs-number">2</span></span><span>
)
</span></span>
In diesem Beispiel verwendet Array_intersect_Ukey die StrCaseCMP -Funktion, um Schlüsselnamen zu vergleichen und den Fall zu ignorieren, sodass "Apple" und "Banane" als dieselben Schlüssel angesehen werden.
Merkmal | Array_intersect_key | array_intersect_ukey |
---|---|---|
Vergleichsmethode | Vergleichen Sie direkte Schlüsselnamen | Ermöglichen Sie den benutzerdefinierten Rückruffunktionen benutzerdefinierte Vergleichsmethoden für Schlüsselschlüsse Namen |
Benutzerdefinierter Vergleich | Benutzerdefinierte Vergleiche werden nicht unterstützt | Unterstützen Sie benutzerdefinierte Vergleichsregeln durch Rückruffunktionen |
Szenarien verwenden | Geeignet für einfache Schlüsselname -Vergleiche ohne Berücksichtigung von Fall oder komplexen Vergleichsregeln | Geeignet für Vergleiche für Schlüsselnamen, die komplexe oder benutzerdefinierte Regeln erfordern |
Leistung | Einfache, hohe Ausführungseffizienz | Da Benutzer -Rückruffunktionen beteiligt sind, kann die Leistung für Array_intersect_Key geringfügig minderwertig sein |
Array_intersect_key ist eine relativ einfache und effiziente Funktion, die zum Vergleich von Schlüsselnamen in mehreren Arrays geeignet ist, ohne benutzerdefinierte Vergleiche von Schlüsselnamen einzubeziehen.
Mit Array_intersect_Ukey können Entwickler den Vergleichsfunktionen für benutzerdefinierte Schlüsselname bereitstellen, wodurch sie flexibler und geeigneter für Szenarien, in denen komplexe Schlüsselname -Vergleiche erforderlich sind, aber auch die Leistung beeinflussen können.
Abhängig von den spezifischen Anwendungsanforderungen können Sie eine geeignete Funktion auswählen, um den Vergleich der Schlüsse Namen zu verarbeiten. Wenn nur eine direkte Übereinstimmung mit dem Direktschlüsselnamen erforderlich ist, reicht Array_intersect_key aus. Wenn eine komplexere Vergleichslogik für einen komplexen Schlüsselnamen erforderlich ist, bietet Array_intersect_Ukey leistungsfähigere Funktionen.