Aktueller Standort: Startseite> Neueste Artikel> Verhaltensanalyse von Array_Column beim Extrahieren nicht existierender Spalten

Verhaltensanalyse von Array_Column beim Extrahieren nicht existierender Spalten

M66 2025-04-28

Array_Column () ist eine häufig verwendete Funktion in PHP, mit der Daten aus einer Spalte aus einem mehrdimensionalen Array extrahiert werden. Es hilft uns leicht, spezifische Informationen aus komplexen Datenstrukturen zu extrahieren. Viele Entwickler können jedoch auf ein Problem stoßen, wenn Sie Array_Column () verwenden: Was wird PHP -Handle, wenn Sie versuchen, eine Spalte zu extrahieren, die nicht vorhanden ist? In diesem Artikel wird das Verhalten dieser Frage ausführlich analysiert und einige gängige verwandte Fragen beantwortet.

Übersicht über die Funktion array_column ()

Die Syntax der Funktion array_column () lautet wie folgt:

 array_column(array $array, mixed $column_key, mixed $index_key = null): array
  • $ Array : Das multidimensionale Eingangsarray.

  • $ column_key : Der Schlüsselwert der zu extrahierenden Spalte. Wenn der Schlüssel der Spalte nicht vorhanden ist, wird Null zurückgegeben.

  • $ INDEX_KEY : Optionaler Parameter, Angabe des als Rückgabearray verwendeten Schlüsselwerts.

Die Funktion dieser Funktion besteht darin, alle Elemente der angegebenen Spalte zurückzugeben. Wenn der angegebene $ column_key in jedem Subtarray existiert, extrahiert er alle Daten für diese Spalte.

Spalten extrahieren, die nicht existieren

1. Übergeben Sie nicht existierende Spalten

Wenn Sie versuchen, eine nicht existierende Spalte zu extrahieren, gibt Array_Column () ein leeres Array ohne Vorwarnung oder Fehler zurück. Zum Beispiel:

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

$names = array_column($data, 'name');
print_r($names);

// Versuchen Sie, die nicht existierende Spalte zu extrahieren 'age'
$ages = array_column($data, 'age');
print_r($ages);

Ausgangsergebnis:

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

Wie oben gezeigt, gibt Array_Column () ein leeres Array zurück, wenn ein nicht existierender Spaltenname (z. B. Alter ) übergeben wird. Zu diesem Zeitpunkt werden keine Fehler oder Warnungen geworfen, nur eine einfache Rückkehr eines leeren Arrays.

2. Situation mit $ index_key Parameter

Wenn Sie gleichzeitig den Parameter $ index_key übergeben und die Spalte nicht existiert, wird PHP weiterhin ein leeres Array zurückgeben. Es ist zu beachten, dass der Parameter $ index_key keinen Einfluss auf das Ergebnis hat, da bei nicht existierenden Spalten einfach nicht möglich ist.

 $names_with_key = array_column($data, 'name', 'id');
print_r($names_with_key);

// Versuchen Sie, eine Spalte zu haben, die nicht existiert
$ages_with_key = array_column($data, 'age', 'id');
print_r($ages_with_key);

Ausgangsergebnis:

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

Unabhängig davon, ob $ index_key festgelegt ist oder nicht, gibt Array_Column () ein leeres Array zurück, wenn die Spalte nicht vorhanden ist.

Häufig gestellte Fragen

1. Warum wird das leere Array anstelle von Null oder anderen Werten zurückgegeben?

PHP In der Entwurf der Funktion array_column () werden nicht existierende Spalten als "leere" Spalte behandelt, wodurch ein leeres Array zurückgegeben wird. Dies sorgt für die Konsistenz und Einfachheit der Funktionen und vermeidet unvorhersehbare Fehler während der Entwicklung.

2. Was passiert, wenn einige Subtarrays die Spalte nicht haben?

Wenn die angegebenen Spalten in einigen Subtarrays fehlen, überspringt Array_Column () diese Subarrays automatisch, ohne sie einzubeziehen. Zum Beispiel:

 $data = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2],
    ['id' => 3, 'name' => 'Charlie']
];

$names = array_column($data, 'name');
print_r($names);

Ausgangsergebnis:

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

Wie Sie sehen können, fehlt der Namensschlüssel im Subtarray mit ID 2 , sodass das Subtarray automatisch übersprungen wird.

3. Was sollte ich achten, wenn ich ein Beispiel mit Array_Column in der URL verwenden soll?

Manchmal verwenden wir URLs als Teil des Arrays in unserem PHP -Code oder erhalten Daten von einer externen API und extrahieren bestimmte Spalten mit Array_Column () . In diesem Fall müssen möglicherweise einige Anforderungen an den Ersatz von Domainnamen behandelt werden. Zum Beispiel, wenn der Code Folgendes hat:

 $data = [
    ['url' => 'https://example.com/page1'],
    ['url' => 'https://example.com/page2'],
    ['url' => 'https://example.com/page3']
];

$urls = array_column($data, 'url');

Wenn Sie den Domänennamen in der URL durch m66.net ersetzen möchten, können Sie die Funktion array_map () und str_replace () verwenden, um ihn zu implementieren:

 $modified_urls = array_map(function($url) {
    return str_replace('example.com', 'm66.net', $url);
}, array_column($data, 'url'));

print_r($modified_urls);

Ausgangsergebnis: