In der PHP -Entwicklung ist Array_Column eine sehr praktische Funktion, die einzelne Spaltendaten aus mehrdimensionalen Arrays extrahiert und ein neues Array zurückgibt. Diese Funktion ist besonders geeignet, um Daten aus einer Datenspalte aus einem großen Array mit mehreren Subarrays zu erhalten. Wenn das Datenvolumen jedoch sehr groß ist, kann die Leistung von Array_Column zu einem Engpass werden, wodurch das Programm langsam wird.
In diesem Artikel werden einige Methoden eingeführt, um die Leistung von Array_Column zu optimieren, um die Effizienz Ihres Programms im Umgang mit großen Arrays zu verbessern.
Lassen Sie uns zunächst kurz die grundlegende Verwendung von Array_Column überprüfen. Angenommen, wir haben ein zweidimensionales Array und möchten die Daten einer bestimmten Spalte extrahieren. Wir können es über Array_Column implementieren:
$data = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Charlie'],
];
$names = array_column($data, 'name');
print_r($names);
Ausgabe:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
In diesem Beispiel extrahieren wir die Daten aus dem $ data -Array der Namensspalte .
Bei kleinen Datensätzen ist die Leistung von Array_Column allgemein akzeptabel. Bei der Verarbeitung von Millionen von Datensätzen oder mehr kann die Ausführungszeit einer Funktion länger werden. Der Grund dafür ist, dass Array_Column jede Zeile findet und extrahiert wird, was in großen Arrays ein sehr zeitaufwändiger Prozess ist.
Wenn Sie mehrere Spalten aus einem großen Array extrahieren müssen, sollten Sie die Anzahl der Anrufe auf Array_Column reduzieren. Vermeiden Sie beispielsweise erneut eine Spalte und eine andere Spalte erneut. Stattdessen können Sie Array_Map verwenden, um mehrere gewünschte Spalten gleichzeitig zu extrahieren.
// Mehrere Spalten extrahieren
$data = [
['id' => 1, 'name' => 'Alice', 'age' => 30],
['id' => 2, 'name' => 'Bob', 'age' => 25],
['id' => 3, 'name' => 'Charlie', 'age' => 35],
];
// Extrahieren Sie alle erforderlichen Spalten gleichzeitig
$columns = array_map(function($item) {
return [$item['name'], $item['age']];
}, $data);
print_r($columns);
Diese Methode erhält mehrere Spalten durch Überqueren gleichzeitig und vermeidet mehrere Aufrufe an array_column .
Die Speicherverwaltung ist auch ein Aspekt, der im Umgang mit sehr großen Arrays Aufmerksamkeit erfordert. Um den Speicherverbrauch zu verringern, können Sie Generatoren verwenden, um Arrays zu verarbeiten, anstatt das gesamte Array in den Speicher zu laden.
Anstatt alle Daten in den Speicher zu laden, kann der Generator jedes Element Schritt für Schritt im Array zurückgeben, was beim Umgang mit Big Data sehr nützlich ist.
// Verwenden Sie den Generator, um Daten Schritt für Schritt zurückzugeben
function getNames($data) {
foreach ($data as $item) {
yield $item['name'];
}
}
$data = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Charlie'],
];
// Verwenden Sie den Generator, um den Namen zu erhalten
foreach (getNames($data) as $name) {
echo $name . PHP_EOL;
}
Dieser Ansatz vermeidet das Laden des gesamten Arrays in den Speicher, wodurch der Speicherverbrauch verringert wird.
Wenn Sie sich mit sehr großen Arrays befassen, können Sie das Array zur Verarbeitung in mehrere kleine Chargen unterteilen. Die Speicherbegrenzungen und Ausführungszeitbeschränkungen von PHP können die Leistung Ihres Programms beeinflussen. Daher ist die Datengrenze eine gute Wahl.
Sie können beispielsweise ein Array um eine bestimmte Größe abschneiden und Array_Column auf jede kleine Charge anwenden und dann die Ergebnisse zusammenführen.
$data = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Charlie'],
// Weitere Daten
];
$batchSize = 1000;
$columns = [];
foreach (array_chunk($data, $batchSize) as $chunk) {
$columns = array_merge($columns, array_column($chunk, 'name'));
}
print_r($columns);
In dieser Methode wird das gesamte Array gleichzeitig durch die Stapelverarbeitung betrieben, wodurch der Druck auf den Speicher und die CPU verringert wird.
Bei der Behandlung großer Arrays kann die Funktion von Array_Column Leistung Engpässe erzeugen, insbesondere wenn das Datenvolumen extrem groß ist. Um seine Leistung zu optimieren, können Sie die folgenden Methoden verwenden:
Reduzieren Sie die Anzahl der Aufrufe an Array_Column und optimieren Sie die Leistung, indem Sie mehrere Spalten gleichzeitig extrahieren.
Verwenden Sie den Generator, um den Array Schritt für Schritt zu verarbeiten, um den Speicherverbrauch zu verringern.
Verarbeiten Sie große Arrays in Chargen, betreiben Sie jeweils eine kleine Stapel, vermeiden Sie Speicher- und Zeitbeschränkungen.
Mit diesen Optimierungsstrategien können Sie die Leistung der Funktion von Array_Column im Umgang mit großen Arrays erheblich verbessern.