Dalam proses pembangunan dengan PHP, pengelasan tanpa had adalah keperluan biasa dan penting. Untuk kemudahan penggunaan dan operasi, kami biasanya menukar kategori tak terhingga kepada bentuk tatasusunan. Berikut ialah cara untuk menukar data kategori tak terhingga kepada bentuk tatasusunan.
Sebelum kita mula, kita perlu menetapkan format data kategori tak terhingga. Secara umumnya, format data pengelasan tak terhingga asas terdiri daripada medan berikut:
Sebagai contoh, data kategori tak terhingga ringkas adalah seperti berikut:
[ ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1], ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2], ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2], ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3], ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3], ]
Kita boleh mentakrifkan fungsi rekursif, Tukar data kategori tanpa had ke dalam bentuk tatasusunan. Kod fungsi ini adalah seperti berikut:
function categoryToTree($source, $parentId = 0) { $result = []; foreach ($source as $key => $value) { if ($value['pid'] == $parentId) { unset($source[$key]); $children = categoryToTree($source, $value['id']); if (!empty($children)) { $value['children'] = $children; } $result[] = $value; } } return $result; }
Kami menggunakan rekursi untuk mencapai penukaran pengelasan tak terhingga. Khususnya, untuk setiap data kategori, kami mula-mula menentukan sama ada ia adalah subkategori kategori semasa Jika ya, tambahkannya pada tatasusunan hasil dan proses subkategorinya secara rekursif, langkau kategori dan proses yang seterusnya secara langsung.
Perhatikan bahawa apabila memproses subkategori secara rekursif, kami akan menghantar dalam tatasusunan $source
. Untuk memastikan setiap kategori hanya diproses sekali, kami perlu memadamkan data kategori yang diproses daripada tatasusunan $source
.
Menggunakan fungsi transformasi yang ditakrifkan di atas, kita boleh menukar data kategori tak terhingga kepada bentuk tatasusunan. Sebagai contoh, kami melaksanakan kod berikut:
$data = [ ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1], ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2], ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2], ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3], ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3], ]; $result = categoryToTree($data); print_r($result);
Hasil output adalah seperti berikut:
Array ( [0] => Array ( [id] => 1 [name] => 电子产品 [pid] => 0 [level] => 1 [children] => Array ( [0] => Array ( [id] => 2 [name] => 手机 [pid] => 1 [level] => 2 [children] => Array ( [0] => Array ( [id] => 4 [name] => 智能手机 [pid] => 2 [level] => 3 ) ) ) [1] => Array ( [id] => 3 [name] => 电脑 [pid] => 1 [level] => 2 [children] => Array ( [0] => Array ( [id] => 5 [name] => 笔记本电脑 [pid] => 3 [level] => 3 ) ) ) ) ) )
Seperti yang anda lihat, kami telah menukar data kategori tak terhingga ke dalam bentuk tatasusunan, dan setiap kategori mengandungi subkategorinya. Dengan cara ini, kita boleh menggunakan fungsi tatasusunan dengan mudah untuk memproses data kategori tanpa had.
Atas ialah kandungan terperinci Bagaimana untuk menukar data kategori tak terhingga ke dalam bentuk tatasusunan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!