Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mengumpulkan baris tatasusunan bersekutu dengan nilai lajur tertentu dalam PHP sambil mengekalkan kunci peringkat pertama yang asal?

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

DDD
DDDasal
2024-10-30 14:07:50799semak imbas

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']
]

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 )
        )
)

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);

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!

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