In PHP wird die Funktion array_combine () verwendet, um zwei Arrays in ein assoziatives Array zu kombinieren. Sein erster Parameter ist das Schlüsselarray, und der zweite Parameter ist das Wert -Array. Die Funktion verwendet jedes Element im Schlüsselarray als Schlüssel zum assoziativen Array und jedes Element im Wert -Array als entsprechender Wert und gibt schließlich ein neues Array zurück.
Wenn jedoch im Schlüsselarray doppelte Schlüssel vorhanden ist, gibt es Probleme bei der Verwendung von Array_combine () . Schauen wir uns an, was passiert und wie man mit dieser Situation umgeht.
Die Syntax von Array_combine () lautet wie folgt:
array_combine(array $keys, array $values): array|false
$ KEYS : Ein Array mit Schlüsselnamen.
$ Werte : Ein Array, das die entsprechenden Werte des Schlüssels enthält.
Wenn die Elemente im $ KEYS -Array den Elementen im $ valuer -Array eins nach dem anderen entsprechen, gibt Array_combine () ein neues assoziatives Array zurück.
$keys = ['a', 'b', 'c'];
$values = [1, 2, 3];
$result = array_combine($keys, $values);
print_r($result);
Ausgangsergebnis:
Array
(
[a] => 1
[b] => 2
[c] => 3
)
Wenn im Schlüsselarray doppelte Schlüssel vorhanden ist, meldet Array_combine () einen Fehler, der False zurückgibt. Dies liegt daran, dass in PHP die Schlüssel des Arrays eindeutig sein müssen und keine doppelten Schlüsselwerte haben können.
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];
$result = array_combine($keys, $values);
if ($result === false) {
echo "Es ist ein Fehler aufgetreten,Im Array existieren doppelte Schlüssel。";
}
Ausgangsergebnis:
Es ist ein Fehler aufgetreten,Im Array existieren doppelte Schlüssel。
Wie oben gezeigt, gibt Array_combine () direkt falsch zurück und erstellt kein gültiges assoziatives Array.
Um Fehler zu vermeiden, die durch doppelte Schlüssel verursacht werden, können Sie überprüfen, ob das Schlüsselarray doppelte Schlüssel enthält, bevor Sie Array_combine () verwenden. Wenn es doppelte Schlüssel gibt, können Sie normalerweise die folgenden Methoden einnehmen, um mit ihnen umzugehen:
Die Funktion array_unique () kann verwendet werden, um doppelte Schlüssel zu entfernen. Dies stellt sicher, dass das Schlüsselarray an Array_combine () nicht dupliziert wird.
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];
$keys = array_unique($keys); // Entfernen Sie doppelte Schlüssel
$result = array_combine($keys, $values);
print_r($result);
Ausgangsergebnis:
Array
(
[a] => 1
[b] => 2
)
Ein weiterer Ansatz ist die Verwendung einer benutzerdefinierten Strategie, um doppelte Schlüssel zu verarbeiten. Verwenden Sie beispielsweise Array_Count_Values () , um die Anzahl der angezeigten Taste zu zählen, und verarbeiten Sie die wiederholten Tasten gemäß den bestimmten Regeln (z. B. Anhängen eines numerischen Suffix).
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];
$keys_count = array_count_values($keys);
foreach ($keys_count as $key => $count) {
if ($count > 1) {
// Verarbeitung doppelter Schlüssel,Zum Beispiel Zahlen nach dem Schlüssel anhängen
$keys = array_map(function ($k) use ($key) {
static $counter = 1;
if ($k === $key) {
return $key . $counter++;
}
return $k;
}, $keys);
}
}
$result = array_combine($keys, $values);
print_r($result);
Ausgangsergebnis:
Array
(
[a] => 1
[b1] => 2
[b2] => 3
)
Bei Verwendung von Array_combine () meldet PHP bei doppelten Schlüssel im Schlüsselarray einen Fehler und gibt False zurück. Um dies zu vermeiden, können Sie die Funktion array_unique () verwenden, um doppelte Schlüssel zu entfernen oder die Strategie zum Umgang mit doppelten Schlüssel entsprechend Ihren Anforderungen anzupassen.
Mit diesen Methoden können Sie sicherstellen, dass Sie bei der Verwendung von Array_Combine () Fehler vermeiden und die Tastenabwicklung entsprechend den tatsächlichen Anforderungen einstellen.