In PHP sind Array_combine () und Array_Reduce () sehr leistungsstarke Funktionen, die zum Kombinieren von zwei Arrays in ein assoziatives Array und zur Reduzierung von Array -Elementen gemäß den spezifischen Regeln (d. H. Vereinfachen oder konvertieren) verwendet werden. Wenn diese beiden Funktionen zusammen verwendet werden, können komplexere Datenstrukturen leicht konstruiert werden. In diesem Artikel werden wir untersuchen, wie diese beiden Funktionen in Kombination verwendet werden, um mehrschichtige verschachtelte Arrays oder andere komplexe Datenstrukturen zu erstellen.
Array_combine () ist eine PHP-integrierte Funktion, die zwei Arrays als Parameter akzeptiert, den Wert des ersten Arrays als Schlüssel und den Wert des zweiten Arrays als Wert nimmt und schließlich ein neues assoziatives Array zurückgibt. Wenn die beiden Arrays unterschiedliche Längen haben, gibt die Funktion falsch zurück.
$keys = ["name", "age", "gender"];
$values = ["John", 25, "male"];
$result = array_combine($keys, $values);
print_r($result);
Ausgabe:
Array
(
[name] => John
[age] => 25
[gender] => male
)
Array_Reduce () ist auch eine PHP-integrierte Funktion, mit der der Wert eines Array durch eine Rückruffunktion allmählich zu einem einzelnen Wert vereinfacht wird. In der Regel kann dieser Wert eine akkumulierte Summe oder andere komplexe Strukturen sein.
$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, function($carry, $item) {
return $carry + $item;
});
echo $sum; // Ausgabe 15
Array_combine () und Array_Reduce () sind bei der Behandlung komplexer Datenstrukturen sehr nützlich, insbesondere wenn Sie eine Art Zusammenfassungsstruktur erstellen müssen, die auf einem Array von Schlüsselwertpaaren basieren. Wir können ein komplexeres, verschachtelteres Array erstellen, indem wir diese beiden Funktionen kombinieren.
Angenommen, wir haben eine Reihe von Daten, die die Noten des Schülers enthalten, die wir nach Subjekt gruppieren und dann eine Zusammenfassung der Noten für jedes Thema über Array_combine () erstellen.
$students = [
["name" => "John", "subject" => "Math", "score" => 85],
["name" => "Alice", "subject" => "Math", "score" => 92],
["name" => "Bob", "subject" => "Math", "score" => 78],
["name" => "John", "subject" => "Science", "score" => 88],
["name" => "Alice", "subject" => "Science", "score" => 94],
["name" => "Bob", "subject" => "Science", "score" => 79],
];
$subjects = array_reduce($students, function($carry, $item) {
// verwenden subject Als Schlüssel,Die Werte werden als Werte gruppiert
if (!isset($carry[$item['subject']])) {
$carry[$item['subject']] = [];
}
$carry[$item['subject']][] = $item['score'];
return $carry;
}, []);
print_r($subjects);
Ausgabe:
Array
(
[Math] => Array
(
[0] => 85
[1] => 92
[2] => 78
)
[Science] => Array
(
[0] => 88
[1] => 94
[2] => 79
)
)
In diesem Beispiel verwenden wir zuerst Array_Reduce () , um die Bewertungen der Schüler basierend auf Fächern zu gruppieren. Anschließend können wir Array_combine () weiter verwenden, um die Schülernamen und Noten jedes Themas zu kartieren, um eine komplexere Struktur zu erstellen.
Als nächstes verwenden wir weiterhin Array_combine (), um die Schülerbewertungen in jedem Fach mit dem Schülernamen weiter aufzubrechen:
$students = [
["name" => "John", "subject" => "Math", "score" => 85],
["name" => "Alice", "subject" => "Math", "score" => 92],
["name" => "Bob", "subject" => "Math", "score" => 78],
["name" => "John", "subject" => "Science", "score" => 88],
["name" => "Alice", "subject" => "Science", "score" => 94],
["name" => "Bob", "subject" => "Science", "score" => 79],
];
$subjects = array_reduce($students, function($carry, $item) {
if (!isset($carry[$item['subject']])) {
$carry[$item['subject']] = [];
}
// 以学生的姓名Als Schlüssel,Noten werden als Werte abgebildet
$carry[$item['subject']] = array_combine(
array_column($carry[$item['subject']], 'name'),
array_column($carry[$item['subject']], 'score')
);
return $carry;
}, []);
print_r($subjects);
Zu diesem Zeitpunkt extrahieren wir die entsprechenden Schlüssel und Werte über Array_Column () , und schließlich können wir ein komplexeres verschachtelteres Array erstellen, sodass wir nach Fach- und Studentennamen suchen und arbeiten können.
Auf diese Weise können wir durch Kombination von Array_combine () und Array_Reduce () die Datenstrukturen, die nach verschiedenen Regeln gruppiert und zusammengefasst sind, leicht erstellen. In der tatsächlichen Entwicklung kann die flexible Verwendung dieser Funktionen die Effizienz und Lesbarkeit der Datenverarbeitung effektiv verbessern.