Aktueller Standort: Startseite> Neueste Artikel> Array_Fill_keys Was passiert, wenn der mittlere Schlüsselname wiederholt wird?

Array_Fill_keys Was passiert, wenn der mittlere Schlüsselname wiederholt wird?

M66 2025-05-14

In PHP ist Array_Fill_Keys () eine sehr nützliche Funktion, die ein neues Array erstellt und den angegebenen Schlüsselnamen mit demselben Wert füllt. Die Syntax dieser Funktion lautet wie folgt:

 array_fill_keys(array $keys, mixed $value): array
  • $ KEYS : Ein Array mit Schlüsselnamen.

  • $ Wert : Der Wert für jeden Schlüsselnamen.

1. Basisbeispiele

Angenommen, wir haben ein einfaches Beispiel:

 $keys = ['a', 'b', 'c'];
$value = 1;

$result = array_fill_keys($keys, $value);
print_r($result);

Die Ausgabe wird sein:

 Array
(
    [a] => 1
    [b] => 1
    [c] => 1
)

Dieses Beispiel ist einfach. Array_Fill_Keys () erstellt ein neues Array basierend auf den angegebenen Schlüsselnamen A , B , C und dem angegebenen Wert 1 .

2. Der Schlüsselname wird wiederholt

Das Problem ist jedoch, dass die Funktion diese doppelten Schlüsselnamen ignoriert, wenn das $ KEYS- Array an Array_Fill_Keys () übergeben wird, und nur das letzte angezeigte Schlüsselwertpaar behält.

Schauen Sie sich beispielsweise den folgenden Code an:

 $keys = ['a', 'b', 'a', 'c'];
$value = 1;

$result = array_fill_keys($keys, $value);
print_r($result);

Sie könnten erwarten, dass das Ergebnis doppelt einen Schlüssel enthält, aber tatsächlich würde es so aussehen:

 Array
(
    [a] => 1
    [b] => 1
    [c] => 1
)

In diesem Beispiel wird der Schlüsselname A wiederholt in array_fill_keys () übergeben, aber das Ergebnis des Arrays behält nur einen Schlüssel A und sein Wert ist 1 . Dieses Verhalten liegt daran, dass die Schlüsselnamen des Arrays in PHP eindeutig sind. Daher werden wiederholte Schlüsselnamen ignoriert, sodass nur der letzte Taste, der erscheint.

3. Warum passiert das?

Dieses Verhalten kann durch die interne Implementierung von PHP -Arrays erklärt werden. In PHP sind die Schlüsselnamen des Arrays eindeutig. Wenn Array_Fill_Keys () ein neues Array erstellt, bindet es tatsächlich jeden Schlüsselnamen an den angegebenen Wert, und wenn es doppelte Schlüsselnamen gibt, behält es nur das letzte Vorkommen des Schlüsselnamens bei. Dies soll doppelte Schlüssel im Array vermeiden, da das Array von PHP nicht zulässt, dass die gleichen Schlüsselnamen zweimal angezeigt werden.

4. Wie vermeiden Sie doppelte Schlüsselnamen?

Wenn Sie dieses Problem vermeiden und sicherstellen möchten, dass in den an Array_Fill_Keys () übergebenen $ -Keys keine doppelten Schlüsselnamen vorhanden sind, können Sie zuerst Array_unique () verwenden, um doppelte Schlüsselnamen zu entfernen:

 $keys = ['a', 'b', 'a', 'c'];
$value = 1;

$uniqueKeys = array_unique($keys);
$result = array_fill_keys($uniqueKeys, $value);
print_r($result);

Die Ausgabe wird sein:

 Array
(
    [a] => 1
    [b] => 1
    [c] => 1
)

Auf diese Weise stellen wir sicher, dass nur eindeutige Schlüsselnamen verwendet werden, um das neue Array zu füllen.

5. Zusammenfassung

Array_Fill_Keys () ist eine sehr bequeme Funktion, aber wenn das übergebene Schlüsselname-Array doppelte Schlüsselnamen enthält, ignoriert es den doppelten Teil und behält nur das letzte angezeigte Schlüsselwertpaar bei. Dieses Verhalten ist Teil des PHP -Array -Designs, das die Einzigartigkeit des Schlüsselnamens des Arrays gewährleistet. Wenn Sie sich mit der Ausgabe von doppelten Schlüsselnamen befassen müssen, können Sie doppelte Schlüssel über Array_unique () entfernen, um sicherzustellen, dass jeder Schlüsselname eindeutig ist.

Hoffentlich hilft Ihnen dieser Artikel, die Funktion array_fill_keys () und ihr Verhalten besser zu verstehen, wenn Sie doppelte Schlüsselnamen begegnen. Wenn Sie andere Fragen haben, können Sie jederzeit Fragen stellen!