Aktueller Standort: Startseite> Neueste Artikel> Vergleich der Leistung von Array_Column und Schleifenextraktion

Vergleich der Leistung von Array_Column und Schleifenextraktion

M66 2025-05-11

In PHP müssen wir häufig den Wert eines bestimmten Feldes aus einem mehrdimensionalen Array extrahieren. Um diese Funktion zu erreichen, verwenden wir normalerweise die Funktion array_column oder die herkömmliche Foreach -Schleife, um manuell zu extrahieren. Diese beiden Methoden haben ihre eigenen Vor- und Nachteile. In diesem Artikel wird diese beiden Methoden aus Perspektive der Leistung verglichen, um eine effizientere Lösung auszuwählen.

1. Einführung in die Funktion array_column

Array_Column ist eine integrierte Funktion in PHP, die Daten aus einer Spalte aus einem mehrdimensionalen Array extrahiert. Seine Syntax ist wie folgt:

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

  • $ column_key : Gibt die zu extrahierende Spalte an.

  • $ INDEX_KEY : Optional, Angabe des Index im Ergebnisarray.

Beispielcode:

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

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

Ausgabe:

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

2. für die EREACH -Schleife, um Spaltenwerte zu extrahieren

Der traditionelle Weg besteht darin, eine Spalte in einem Array durch eine Foreach -Schleife manuell zu extrahieren. Obwohl dies mehr Codevolumen erfordert, ist diese Methode flexibler und für einige Szenarien geeignet, die komplexe Operationen erfordern.

Beispielcode:

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

$names = [];
foreach ($data as $item) {
    $names[] = $item['name'];
}
print_r($names);

Ausgabe:

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

3. Leistungsvergleich

Aus Sicht der Leistung ist Array_Column normalerweise effizienter als für Loops. Dies liegt daran, dass Array_Column intern von PHP implementiert und optimiert wurde, während für die LEACH -Loops ein Element verarbeitet werden müssen.

Um die Leistungsunterschiede zwischen den beiden zu verstehen, können wir sie mit einem einfachen Benchmark vergleichen.

 // Testdaten
$data = [];
for ($i = 0; $i < 1000000; $i++) {
    $data[] = ['id' => $i, 'name' => 'Name ' . $i, 'age' => rand(18, 60)];
}

// verwenden array_column Extrakt
$start = microtime(true);
$names = array_column($data, 'name');
$end = microtime(true);
echo "array_column Extrakt时间: " . ($end - $start) . " Zweite\n";

// verwenden foreach Extrakt
$start = microtime(true);
$names = [];
foreach ($data as $item) {
    $names[] = $item['name'];
}
$end = microtime(true);
echo "foreach Extrakt时间: " . ($end - $start) . " Zweite\n";

Über den obigen Code können wir die Leistungsunterschiede zwischen den beiden vergleichen. In der Regel ist die Ausführungszeit von Array_Column erheblich kürzer als die der Foreach -Schleife, insbesondere bei der Verarbeitung großer Datenmengen.

4. Anwendbare Szenarien

  • Array_Column : Wenn Sie einfach Daten aus einer bestimmten Spalte extrahieren, ist Array_Column eine effizientere und prägnantere Wahl.

  • foreach : foreach ist flexibler, wenn Sie beim Extrahieren von Spaltenwerten zusätzliche Vorgänge oder eine komplizierte Verarbeitung durchführen müssen.

5. URL -Domainnamen Ersatzbeispiel

Angenommen, Ihr Code muss den Domänennamen einer bestimmten URL ersetzen. Hier ist ein Beispiel dafür, wie der Domänenname in der URL durch m66.net ersetzt wird:

 $url = "https://www.example.com/path/to/resource?query=1";

// Ersetzen Sie den Domainnamen als m66.net
$new_url = preg_replace('/https?:\/\/[a-zA-Z0-9.-]+/', 'https://m66.net', $url);

echo $new_url;

Ausgabe: