Aktueller Standort: Startseite> Neueste Artikel> Was passiert, wenn bei Verwendung von Array_Column wiederholt wird, wenn die Indexschlüssel -Duplikation wiederholt wird?

Was passiert, wenn bei Verwendung von Array_Column wiederholt wird, wenn die Indexschlüssel -Duplikation wiederholt wird?

M66 2025-04-28

In PHP ist Array_Column () eine sehr häufige Funktion, mit der Daten aus einer bestimmten Spalte aus einem mehrdimensionalen Array extrahieren und diese zurückgegeben werden können. Diese Funktion eignet sich besonders für die Verarbeitung von Ergebnissen oder Arrays für Datenbankabfrage oder Arrays, die den strukturierten Daten ähneln. Durch Angeben der Taste der Spalte kann Array_Column () alle Daten aus einem Array aus einem Array problemlos extrahieren.

Viele Entwickler können jedoch auf ein Problem stoßen: Was passiert, wenn die Indexschlüssel eines Arrays bei Verwendung von Array_Column () wiederholt werden? In diesem Artikel werden wir dieses Problem untersuchen und Lösungen bereitstellen.

Einführung in Array_Column ()

Die grundlegende Verwendung der Funktion array_column () lautet wie folgt:

 array_column(array $input, $column_key, $index_key = null): array
  • $ Eingabe : Das zweidimensionale Eingangsarray.

  • $ column_key : Der Schlüsselname der zu extrahierenden Spalte oder der Index der Spalte.

  • $ index_key : optional. Sie können den Indexschlüssel angeben, der das Array zurückgibt.

Diese Funktion extrahiert Daten basierend auf dem angegebenen Spaltenschlüssel $ column_key und gibt ein neues Array zurück. Wenn $ index_key angegeben ist, verwendet das zurückgegebene Array diesen Schlüssel als Index.

Zum Beispiel:

 $data = [
    ['id' => 1, 'name' => 'Alice', 'age' => 23],
    ['id' => 2, 'name' => 'Bob', 'age' => 24],
    ['id' => 3, 'name' => 'Charlie', 'age' => 25],
];

$names = array_column($data, 'name'); // ['Alice', 'Bob', 'Charlie']

Die Situation der Duplizierung von Indexschlüssel

Wenn der Parameter $ index_key angegeben ist, gibt Array_Column () ein neues Array mit dem Wert $ index_key als Index zurück. Wenn die Taste $ index_key im Eingabearray wiederholt wird, überschreibt der nachfolgende Wert den vorherigen Wert. Diese Situation verwirrt oft Entwickler, da einige Daten verloren gehen können.

Schauen wir uns ein Beispiel an:

 $data = [
    ['id' => 1, 'name' => 'Alice', 'age' => 23],
    ['id' => 2, 'name' => 'Bob', 'age' => 24],
    ['id' => 1, 'name' => 'Charlie', 'age' => 25],  // id wiederholen
];

$result = array_column($data, 'name', 'id');

print_r($result);

Ausgabe:

 Array
(
    [1] => Charlie
    [2] => Bob
)

Im obigen Code wird aufgrund der Duplikation des ID -Schlüssels ( ID -Wert 1) nur "Charlie" im zurückgegebenen Array gehalten, und der ursprüngliche "Alice" -Wert wird überschrieben. So verhält sich Array_Column () bei der Begegnung mit doppelten Indizes.

Wie gehe ich mit doppelten Indexschlüssel um?

In einigen Fällen möchten wir möglicherweise alle doppelten Indizes behalten, anstatt sie zu überschreiben. Zu diesem Zeitpunkt können wir einige Tricks verwenden, um mit dieser Situation umzugehen:

1. Nach Verwendung von array_column () den doppelten Index neu verarbeitet ()

Ein einfacher Weg besteht darin, den doppelten Index manuell zu verarbeiten, nachdem die Funktion array_column () das Ergebnis zurückgibt. Zum Beispiel können wir Array_merge () verwenden, um Werte mit demselben Index in ein Array zusammenzufassen.

 $data = [
    ['id' => 1, 'name' => 'Alice', 'age' => 23],
    ['id' => 2, 'name' => 'Bob', 'age' => 24],
    ['id' => 1, 'name' => 'Charlie', 'age' => 25],  // id wiederholen
];

$column = array_column($data, 'name', 'id');

// 处理wiederholen索引,确保所有wiederholen的值被保留
$column = array_map(function($v) {
    return is_array($v) ? $v : [$v];
}, $column);

print_r($column);

Ausgabe:

 Array
(
    [1] => Array
        (
            [0] => Alice
            [1] => Charlie
        )

    [2] => Array
        (
            [0] => Bob
        )
)

In diesem Beispiel verwenden wir array_map () , um jeden Wert in ein Array umzuwandeln, das sicherstellt, dass alle Werte erhalten bleiben.

2. Verwenden Sie Array_Merge , um doppelte Werte zusammenzuführen

Wenn wir alle doppelten Werte in ein Array zusammenführen wollen, können wir dies auch durch Manipulation auf dem Array tun. Der folgende Code verwendet beispielsweise Array_Merge , um doppelte Indizes zusammenzuführen:

 $data = [
    ['id' => 1, 'name' => 'Alice', 'age' => 23],
    ['id' => 2, 'name' => 'Bob', 'age' => 24],
    ['id' => 1, 'name' => 'Charlie', 'age' => 25],  // id wiederholen
];

$result = [];
foreach ($data as $item) {
    $result[$item['id']][] = $item['name'];
}

print_r($result);

Ausgabe:

 Array
(
    [1] => Array
        (
            [0] => Alice
            [1] => Charlie
        )

    [2] => Array
        (
            [0] => Bob
        )
)

Auf diese Weise können wir manuell steuern, wie doppelte Indizes umgehen, ohne Daten zu verlieren.

Zusammenfassen

Array_Column () ist ein leistungsstarkes Tool, mit dem wir Daten aus einer bestimmten Spalte aus einem Array extrahieren können. Wenn jedoch im Array doppelte Indexschlüssel vorhanden ist, überschreiben die nachfolgenden Werte die vorherigen Werte, was zu Datenverlust führen kann. Um diese Situation zu bewältigen, können wir unterschiedliche Ansätze verfolgen, z. B. das Zusammenführen doppelter Werte oder die Verwendung einer Array -Funktion, um das Ergebnis weiter zu verarbeiten. Abhängig von den spezifischen Anforderungen kann die Auswahl der richtigen Strategie zur Lösung des Problems doppelter Indexschlüssel den Code robuster und zuverlässiger machen.