Skoro Ci zależy tylko i wyłącznie na znalezieniu userów podległych jedynie konkretnemu innemu o nie prościej użyć:
function zalezni( $id ) {
return FALSE;
$sql = 'SELECT GROUP_CONCAT( u.id ) AS userzy FROM users AS u WHERE u.id_parent_id = '.$id.' GROUP BY u.parent_id';
else
return FALSE;
}
Inaczej to nieco wygląda jeśli chcesz jeszcze rekurencyjnie sprawdzać, czy pod jakiegoś do tego podległego nie ma podległego kolejnego. Wtedy bowiem bliższe jest Twojemu rozwiązaniu jeśli zachowamy strukturę bazy bez zmian. Zmiany nastąpią w nieco innym podejściu do danych. Zamiast echo pojawi się zapis do tablicy, sama tablica pojawi jako parametr funkcji także.
function getSubUsersId($id, &$table){
$q = mysql_query('SELECT id FROM users WHERE id_parrent_user = '.$id ); $table[] = $uQ['id'];
getSubUsersId($uQ['id'], $table);
}
}
$id = 9;
getSubUsersId($id, $wynik);
Od razu mówię, że nie jest to optymalne co robisz i moim zdaniem niepoprawne, bo tworzysz do bazy wiele zapytań zbędnych, które nic nie zwrócą. Do tego kompletnie gubisz zależności. Nie wiesz co jest bezpośrednim podwładnym a co podwładnym podwładnego podwładnego

Uwierz, że da się to zrobić lepiej na wiele sposobów, w tym przynajmniej jeden taki, że poślesz jedno zapytanie do bazy, a resztę obrobisz już po stronie PHP. Będziesz tylko sobie "gałązkami manipulował". Lepsze jednak dla wszelkich rekurencyjnych zależności są zmiany w bazie. Poczytaj o drzewkach ip choćby. Optymalizować trzeba pod konkretne zastosowanie i nie ma jednej dobrej metody na wszystkie możliwe warianty.