Aktueller Standort: Startseite> Neueste Artikel> Wie erstelle ich eine komplexere Datenstruktur, indem ich Array_combine () und Array_REDUCE () verwendete?

Wie erstelle ich eine komplexere Datenstruktur, indem ich Array_combine () und Array_REDUCE () verwendete?

M66 2025-06-07

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.

Was ist Array_combine () ?

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.

Beispielcode:

 $keys = ["name", "age", "gender"];
$values = ["John", 25, "male"];

$result = array_combine($keys, $values);
print_r($result);

Ausgabe:

 Array
(
    [name] => John
    [age] => 25
    [gender] => male
)

Was ist Array_Reduce () ?

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.

Beispielcode:

 $numbers = [1, 2, 3, 4, 5];

$sum = array_reduce($numbers, function($carry, $item) {
    return $carry + $item;
});

echo $sum; // Ausgabe 15

Verwenden Sie Array_combine () und Array_reduce () zusammen

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.

Beispiel: Erstellen eines mehrschichtigen verschachtelten assoziativen Arrays basierend auf einer Datenmenge

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.

Weitere Komplikation: Bauen von mehrschichtigen verschachtelten Arrays

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.