Jest drzewo i ma ono gałęzi trochę po kilka liści na gałęziach co jak to:
no i teraz chcę policzyć wszystkie liście znajdujące się poniżej zadanego więc napisałem:
$user_id // korzeń
$level // poziom poszukiwań
$array // tablica z indeksami rodziców tzn. każdy 'user_id' ma listę swoich dzieci
1 | 2,3,4,5
2 | 6,7
3 | 8,9
4 |-
5 | 10,11,
6 | 12,13,14
7 | -
8 | -
9 | 15,16
[...]
$number // zmienna licząca
function countGroup($user_id, $level , $array , $number) {
$index=$array;
if (isset($index[$user_id])) {
foreach ($index[$user_id] as $id) {
countGroup($id, $level+1,$array,$number);
$number++;
}
}
return $number;
}
No i problem jest taki, że przeszukuje prawidłowo, jednak zwracany wynik jest nieprawidłowy.
Przykład prawdziwej tablicy testowej:
$array = array(10) {
[0]=>
array(1) {
[0]=>
string(1) "1"
}
[2]=>
array(47) {
[0]=>
string(1) "2"
[1]=>
string(1) "3"
[2]=>
string(1) "4"
[3]=>
string(1) "8"
[4]=>
string(1) "9"
[5]=>
string(2) "10"
[6]=>
string(2) "14"
[7]=>
string(2) "15"
[8]=>
string(2) "16"
[9]=>
string(2) "21"
[10]=>
string(2) "25"
[11]=>
string(2) "26"
[12]=>
string(2) "27"
[13]=>
string(2) "28"
[14]=>
string(2) "29"
[15]=>
string(2) "30"
[16]=>
string(2) "31"
[17]=>
string(2) "32"
[18]=>
string(2) "33"
[19]=>
string(2) "34"
[20]=>
string(2) "36"
[21]=>
string(2) "37"
[22]=>
string(2) "38"
[23]=>
string(2) "39"
[24]=>
string(2) "51"
[25]=>
string(2) "40"
[26]=>
string(2) "41"
[27]=>
string(2) "42"
[28]=>
string(2) "43"
[29]=>
string(2) "44"
[30]=>
string(2) "45"
[31]=>
string(2) "46"
[32]=>
string(2) "47"
[33]=>
string(2) "48"
[34]=>
string(2) "49"
[35]=>
string(2) "50"
[36]=>
string(2) "52"
[37]=>
string(2) "53"
[38]=>
string(2) "54"
[39]=>
string(2) "56"
[40]=>
string(2) "57"
[41]=>
string(2) "58"
[42]=>
string(2) "61"
[43]=>
string(2) "65"
[44]=>
string(2) "66"
[45]=>
string(2) "67"
[46]=>
string(2) "68"
}
[1]=>
array(3) {
[0]=>
string(2) "60"
[1]=>
string(2) "63"
[2]=>
string(2) "64"
}
[3]=>
array(9) {
[0]=>
string(1) "5"
[1]=>
string(1) "6"
[2]=>
string(1) "7"
[3]=>
string(2) "11"
[4]=>
string(2) "12"
[5]=>
string(2) "13"
[6]=>
string(2) "17"
[7]=>
string(2) "20"
[8]=>
string(2) "23"
}
[21]=>
array(2) {
[0]=>
string(2) "22"
[1]=>
string(2) "59"
}
[8]=>
array(3) {
[0]=>
string(2) "24"
[1]=>
string(2) "18"
[2]=>
string(2) "55"
}
[30]=>
array(1) {
[0]=>
string(2) "35"
}
[61]=>
array(1) {
[0]=>
string(2) "62"
}
[55]=>
array(2) {
[0]=>
string(2) "69"
[1]=>
string(2) "70"
}
[70]=>
array(2) {
[0]=>
string(2) "71"
[1]=>
string(2) "72"
}
}
Jakieś pomysły?