Thanks very much, Brian. Your response helped me find the answer. On the recursive call to breadcrumbs(), the function wasn't actually returning anything to itself. I replaced "breadcrumbs()" with "return breadcrumbs()" and everything now works.
> -----Original Message----- > From: Brian T. Allen [mailto:[EMAIL PROTECTED]] > Sent: Wednesday, January 22, 2003 4:47 PM > To: 'Andy Crain'; [EMAIL PROTECTED] > Subject: RE: [PHP] Returning a value from a recursive function > > I think it will work if you return true, and just modify the global > variable (not try to output it). > > Then output it (or capture it to begin with ($total_count = > OneHundred();) after the function is called. > > You could also pass the variable, rather than making it global > (OneHundred("0") initially, and OneHundred($count) from within the > function). > > For instance: > > <?php > > function OneHundred(){ > global $count; > > if($count < 100){ > $count++; > OneHundred(); > } > > return true; > } > > OneHundred(); > > echo $count; > > ?> > > > Hope that helps, > Brian > > > -----Original Message----- > > From: Andy Crain [mailto:[EMAIL PROTECTED]] > > Sent: Wednesday, January 22, 2003 1:23 PM > > To: [EMAIL PROTECTED] > > Subject: [PHP] Returning a value from a recursive function > > > > > > Everyone, > > > > I'm stumped by this, even after searching the archives and the web, > > although I admit the solution likely is something very obvious. > > > > > > > > I've written a function to build a string of "breadcrumb" links for a > > web site directory similar to Yahoo, etc. It queries a > > categories table > > recursively until it reaches the root category, building a string of > > categories from the current category all the way back up to root. The > > function seems to work fine if I output directly from it > > using echo, but > > if I instead try to return the string to the global scope and > > then echo > > it, I get nothing. The line where I use echo/return is > > indicated below. > > > > Thanks, > > > > Andy > > > > > > > > function breadcrumbs($category_id=0,$mode='linked'){ > > > > global $id_array,$name_array; > > > > > > > > static $counter = 0; > > > > > > > > if ($category_id == 0) { > > > > //once we're down to the root, build a return string > > > > if ($mode == 'linked') { > > > > $output = '<A HREF="' . $_SERVER['PHP_SELF'] . '">HOME</A>'; > > > > } else { > > > > $output = 'HOME'; > > > > } > > > > while($counter > 0){ > > > > if ($mode == 'linked') { > > > > $output .= ' > <A HREF="' . $_SERVER['PHP_SELF'] . > > '?category_id=' . array_pop($id_array) . '">' . > > array_pop($name_array) > > . '</A>'; > > > > } else { > > > > $output .= ' > ' . array_pop($name_array); > > > > } > > > > $counter--; > > > > } > > > > return $output; /*<--------HERE: IF I SUBSTITUTE "ECHO" FOR > > "RETURN", EVERYTHING WORKS; BUT WITH "RETURN", IT DOESN'T WORK*/ > > > > } else { > > > > $sql = 'SELECT category_id, parent_cat, category_name FROM > > web_categories WHERE category_id = ' . $category_id; > > > > $result = safe_query($sql); > > > > while($query_data = mysql_fetch_assoc($result)){ > > > > $id_array[$counter] = $query_data['category_id']; > > > > $name_array[$counter] = $query_data['category_name']; > > > > //now, move one step up and make the current category the > > previous parent > > > > $category_id = $query_data['parent_cat']; > > > > $counter++; > > > > breadcrumbs($category_id,$mode); > > > > } > > > > } > > > > } > > > > > > > > $show = breadcrumbs(9); > > > > echo $show; > > > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php