Bagaimanakah saya boleh mengumpulkan baris tatasusunan bersekutu dengan nilai lajur tertentu dalam PHP sambil mengekalkan kunci peringkat pertama yang asal?

DDD
Lepaskan: 2024-10-30 14:07:50
asal
799 orang telah melayarinya

How can I group associative array rows by a specific column value in PHP while preserving the original first-level keys?

Mengumpulkan Baris Tatasusunan Bersekutu mengikut Nilai Lajur

Memandangkan tatasusunan bersekutu tatasusunan bersekutu, tugas biasa ialah mengumpulkannya mengikut lajur tertentu nilai sambil mengekalkan kunci peringkat pertama asal. Pertimbangkan tatasusunan input berikut:

[
    'a' => ['id' => 20, 'name' => 'chimpanzee'],
    'b' => ['id' => 40, 'name' => 'meeting'],
    'c' => ['id' => 20, 'name' => 'dynasty'],
    'd' => ['id' => 50, 'name' => 'chocolate'],
    'e' => ['id' => 10, 'name' => 'bananas'],
    'f' => ['id' => 50, 'name' => 'fantasy'],
    'g' => ['id' => 50, 'name' => 'football']
]
Salin selepas log masuk

Matlamat kami adalah untuk mengumpulkan subarray ini berdasarkan nilai id:

array
(
    10 => array
        (
            e => array ( id = 10, name = bananas )
        )
    20 => array
        (
            a => array ( id = 20, name = chimpanzee )
            c => array ( id = 20, name = dynasty )
        )
    40 => array
        (
            b => array ( id = 40, name = meeting )
        )
    50 => array
        (
            d => array ( id = 50, name = chocolate )
            f => array ( id = 50, name = fantasy )
            g => array ( id = 50, name = football )
        )
)
Salin selepas log masuk

Untuk mencapai ini menggunakan PHP, kami boleh menggunakan kod berikut:

$arr = array();

foreach ($old_arr as $key => $item) {
   $arr[$item['id']][$key] = $item;
}

ksort($arr, SORT_NUMERIC);
Salin selepas log masuk

Kod ini mula-mula berulang pada tatasusunan asal, mengekstrak id dan subbaris yang sepadan. Ia kemudian menyimpan subarray ini dalam tatasusunan baharu di bawah kekunci id dan mengekalkan kunci peringkat pertama yang asal. Akhir sekali, ia mengisih tatasusunan baharu secara berangka mengikut id.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengumpulkan baris tatasusunan bersekutu dengan nilai lajur tertentu dalam PHP sambil mengekalkan kunci peringkat pertama yang asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!