Php iç içe dizileri alt alta hale getirmek
Aşağıda ki kod ile bir json çıktı oluşturuyorum
bu çıktıyı içe içe diziler halinde değil alt alta diziler halinde çıkartmak istiyorum nasıl yaparım?
$categories = [
[
'id' => 1,
'parent' => 0,
'name' => 'Kapılar'
],
[
'id' => 2,
'parent' => 0,
'name' => 'Vestiyerler'
],
[
'id' => 3,
'parent' => 0,
'name' => 'Dresuarlar'
],
[
'id' => 4,
'parent' => 1,
'name' => 'Lake Kapılar'
],
[
'id' => 5,
'parent' => 1,
'name' => 'Amerikan Panel Kapılar'
],
[
'id' => 6,
'parent' => 5,
'name' => 'Camlı Amerikan Panel Kapılar'
],
];
function categoryList($categories, $top = 0)
{
if(count($categories) > 0){
foreach ($categories as $category){
if($category['parent'] == $top):
$all[] = $category;
if(!is_null(categoryList($categories, $category['id']))){
$all[] = categoryList($categories, $category['id']);
}
endif;
}
}
return $all;
}
[
{
"id": 1,
"parent": 0,
"name": "Kap\u0131lar"
},
[
{
"id": 4,
"parent": 1,
"name": "Lake Kap\u0131lar"
},
{
"id": 5,
"parent": 1,
"name": "Amerikan Panel Kap\u0131lar"
},
[
{
"id": 6,
"parent": 5,
"name": "Caml\u0131 Amerikan Panel Kap\u0131lar"
}
]
],
{
"id": 2,
"parent": 0,
"name": "Vestiyerler"
},
{
"id": 3,
"parent": 0,
"name": "Dresuarlar"
}
]
php'de recursive functions denilen bir yapı var mantığı bir kontrol ile gerekli şartları sağlarsa (mesela parent'ı var mı gibi) fonksiyonu tekrar çağarıyorsun.
yapman gereken de böyle bir fonksiyon yazıp her elemanı ayrı bir diziye aktarmak bunu dizinin içindeki elamanları almak için foreach de kullanabilirsin for da foreach daha çok işine yarar içindeki elemanları kolayca çekersin.