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.
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
)
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
)
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.
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.
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: