Ben ikili mlm sistemini kullanan bir sitede çalışıyordum.
Yani veritabanında iki tablo var, kullanıcılar ilişkileri Anad. Kullanıcı ID ve kişisel verilerin sütunlar vardır. Kimliği, parentID, childID, Poz: İlişkiler 4 sütun vardır. Poz sol veya sağ olduğu.
Ben başarıyla ardışık verilen pid (parentID) tüm çocukları listeleyen bir fonksiyon yazdım. Ancak ben (ekran ve hesaplama amaçlı) seviyelerinde sıralamak gerekir.
Ben kullanıcı kimliği = 1 çocukların bir dizi var:
Array
(
[0] => Array
(
[id] => 2
[parentID] => 1
[pos] => l
)
[1] => Array
(
[id] => 4
[parentID] => 2
[pos] => l
)
[2] => Array
(
[id] => 8
[parentID] => 4
[pos] => l
)
[3] => Array
(
[id] => 5
[parentID] => 2
[pos] => p
)
[4] => Array
(
[id] => 3
[parentID] => 1
[pos] => p
)
[5] => Array
(
[id] => 6
[parentID] => 3
[pos] => l
)
[6] => Array
(
[id] => 7
[parentID] => 3
[pos] => p
)
)
Şimdi should bu gibi bakmak o bir çok boyutlu dizi döndüren fonksiyonu adlı get_levels var:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 2
[parentID] => 1
[pos] => l
)
[1] => Array
(
[id] => 3
[parentID] => 1
[pos] => p
)
)
[1] => Array
(
[0] => Array
(
[id] => 4
[parentID] => 2
[pos] => l
)
[1] => Array
(
[id] => 5
[parentID] => 2
[pos] => p
)
[2] => Array
(
[id] => 6
[parentID] => 3
[pos] => l
)
[3] => Array
(
[id] => 7
[parentID] => 3
[pos] => p
)
)
ETC.
)
İşte fonksiyonu bulunuyor:
function get_levels($pid,$level, $level_id){
$children = children_array($pid,1);
if (sizeof($children) > 0):
foreach ($children as $child):
if ($child["parentID"] == $pid):
get_levels($child["id"], $level, $level_id+1);
$level[$level_id][] = $child;
endif;
endforeach;
endif;
return $level;
}
fonksiyonu children_array ($ pid, $ derinlik) çocukları döner ... $ derinliği = 1 için, hemen çocuklar (0 veya 1 veya 2) döndürür $ derinliği = 0 için tüm çocukları döndürür
Herkes bu fonksiyonu ile bana yardımcı olabilir misiniz? Ben işlevi çalışır düşünüyorum, ancak I don't know how to recursively use and add to array.