Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggabungkan berbilang tatasusunan ke dalam satu tatasusunan mengikut nama kunci yang ditentukan dalam PHP

Bagaimana untuk menggabungkan berbilang tatasusunan ke dalam satu tatasusunan mengikut nama kunci yang ditentukan dalam PHP

WBOY
WBOYasal
2023-07-07 16:12:231398semak imbas

Cara menggabungkan berbilang tatasusunan menjadi satu tatasusunan mengikut nama kunci yang ditentukan dalam PHP

Dalam pembangunan, kami sering menghadapi keperluan untuk menggabungkan berbilang tatasusunan menjadi satu tatasusunan mengikut nama kunci yang ditentukan. Keperluan ini sangat biasa apabila bekerja dengan data, terutamanya apabila bekerja dengan set hasil pangkalan data, contohnya. Artikel ini akan memperkenalkan beberapa kaedah biasa untuk mencapai fungsi ini dan memberikan contoh kod yang sepadan.

Kaedah 1: Gunakan loop traversal

Kaedah paling mudah ialah menggunakan gelung untuk melintasi semua tatasusunan dan menambah nilai yang sepadan ke tatasusunan baharu mengikut nama kunci yang ditentukan. Kod sampel adalah seperti berikut:

function mergeArrays($key, ...$arrays)
{
    $result = [];
    
    foreach ($arrays as $array) {
        if (isset($array[$key])) {
            $result[] = $array[$key];
        }
    }
    
    return $result;
}

$array1 = ['id' => 1, 'name' => 'Alice'];
$array2 = ['id' => 2, 'name' => 'Bob'];
$array3 = ['id' => 3, 'name' => 'Charlie'];

$result = mergeArrays('name', $array1, $array2, $array3);

print_r($result);

Jalankan kod di atas, hasil output ialah:

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

Kaedah 2: Gunakan fungsi array_map

array_map untuk menggunakan fungsi panggil balik pada berbilang tatasusunan dan kembalikan tatasusunan baharu. Kita boleh menggunakan fungsi ini untuk menggabungkan berbilang tatasusunan. Kod sampel adalah seperti berikut:

function mergeArrays($key, ...$arrays)
{
    $callback = function ($array) use ($key) {
        return $array[$key] ?? null;
    };
    
    $result = array_map($callback, $arrays);
    
    return array_filter($result, function($value) {
        return $value !== null;
    });
}

$array1 = ['id' => 1, 'name' => 'Alice'];
$array2 = ['id' => 2, 'name' => 'Bob'];
$array3 = ['id' => 3, 'name' => 'Charlie'];

$result = mergeArrays('name', $array1, $array2, $array3);

print_r($result);

Jalankan kod di atas, hasil output ialah:

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

Kaedah 3: Gunakan fungsi array_reduce

array_reduce fungsi digunakan untuk memproses secara berulang elemen dalam tatasusunan, memprosesnya mengikut yang ditentukan fungsi panggil balik, dan Kembalikan hasil akhir. Kita boleh menggunakan fungsi ini untuk menggabungkan berbilang tatasusunan. Kod sampel adalah seperti berikut:

function mergeArrays($key, ...$arrays)
{
    $callback = function ($result, $array) use ($key) {
        if (isset($array[$key])) {
            $result[] = $array[$key];
        }
        return $result;
    };
    
    $result = array_reduce($arrays, $callback, []);
    
    return $result;
}

$array1 = ['id' => 1, 'name' => 'Alice'];
$array2 = ['id' => 2, 'name' => 'Bob'];
$array3 = ['id' => 3, 'name' => 'Charlie'];

$result = mergeArrays('name', $array1, $array2, $array3);

print_r($result);

Jalankan kod di atas, hasil output ialah:

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

Di atas adalah contoh beberapa kaedah biasa untuk menggabungkan berbilang tatasusunan menjadi satu tatasusunan mengikut nama kunci yang ditentukan. Memilih kaedah yang sesuai mengikut situasi sebenar boleh meningkatkan kecekapan dan kebolehbacaan kod. Harap ini membantu!

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan berbilang tatasusunan ke dalam satu tatasusunan mengikut nama kunci yang ditentukan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn