Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man zwei 2D-Arrays basierend auf einem gemeinsamen Spaltenwert in PHP effizient zusammenführen?

Wie kann man zwei 2D-Arrays basierend auf einem gemeinsamen Spaltenwert in PHP effizient zusammenführen?

DDD
DDDOriginal
2024-12-16 07:31:15452Durchsuche

How to Efficiently Merge Two 2D Arrays Based on a Shared Column Value in PHP?

Zusammenführen von 2D-Arrays basierend auf dem gemeinsamen Spaltenwert

Für die angegebenen 2D-Arrays:

$array1 = [
    ['rank' => '579', 'id' => '1'],
    ['rank' => '251', 'id' => '2'],
];

$array2 = [
    ['size' => 'S', 'status' => 'A', 'id' => '1'],
    ['size' => 'L', 'status' => 'A', 'id' => '2'],
];

Zusammenführen mit nativen PHP-Array-Funktionen

Um die Arrays basierend zusammenzuführen In der gemeinsamen Spalte „id“ können Sie die Funktion array_merge_recursive() nutzen. Es führt rekursiv Elemente aus den Eingabearrays zusammen und behält dabei die Schlüssel bei:

$merged = array_merge_recursive($array1, $array2);

print_r($merged);
// Output:
// Array
// (
//     [0] => Array
//         (
//             [rank] => 579
//             [id] => 1
//             [size] => S
//             [status] => A
//         )
//     [1] => Array
//         (
//             [rank] => 251
//             [id] => 2
//             [size] => L
//             [status] => A
//         )
// )

Benutzerdefinierte Zusammenführungsfunktion

Alternativ können Sie Ihre eigene Funktion zum Zusammenführen von Arrays basierend auf a definieren angegebener Schlüssel:

function my_array_merge($array1, $array2, $key)
{
    $result = [];
    foreach ($array1 as $item) {
        $result[$item[$key]] = array_merge($item, $array2[$item[$key]]);
    }
    return $result;
}

$merged = my_array_merge($array1, $array2, 'id');

print_r($merged);
// Output:
// Array
// (
//     [1] => Array
//         (
//             [rank] => 579
//             [id] => 1
//             [size] => S
//             [status] => A
//         )
//     [2] => Array
//         (
//             [rank] => 251
//             [id] => 2
//             [size] => L
//             [status] => A
//         )
// )

Erwägen Sie die Verwendung von my_array_merge(), wenn Sie mit großen arbeiten Arrays, da es array_merge_recursive() potenziell übertreffen kann.

Das obige ist der detaillierte Inhalt vonWie kann man zwei 2D-Arrays basierend auf einem gemeinsamen Spaltenwert in PHP effizient zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn