PHP函数与echo一起工作但不与return [关闭]

I have this function it allows me to create multi level menu

the problem after I finish the code, using "echo", I tried to make it work in return but it did not give me the sub menu it shows only the main menu!

and If I keep using the echo method i get the code in the top of the page!

any ideas what should I do

Echo code :

function showMenu($level = 0,$site_url,$get_type_sec,$get_sub_type_sec) {

$result = mysql_query("SELECT * FROM pages WHERE parent_id ='$level' order by navigation_order ASC"); 
echo "<ul>";
    while ($node = mysql_fetch_array($result)) { 


            $result2 = mysql_query("SELECT * FROM pages WHERE id ='$node[parent_id]' order by navigation_order ASC"); 
             while ($node2 = mysql_fetch_array($result2)) {$node3="$node2[query_string]/";
             $noder="$node[id]"; 
             $result3 = mysql_query("SELECT * FROM pages WHERE id ='$node2[parent_id]' order by navigation_order ASC"); 
             while ($node3 = mysql_fetch_array($result3)) {$node2="$node3[query_string]/"; }
             }


            echo "<li><a href='$site_url/$node2$node3$node[query_string]/'> $node[title] </a> ";
            $hasChild = mysql_fetch_array(mysql_query("SELECT * FROM pages WHERE id ='$node[id]'")) != null;
            // If user request same page open menu 
            IF ($hasChild && $node['query_string']=="$get_type_sec") {
                showMenu($node['id'],$site_url,$get_type_sec,$get_sub_type_sec);    
            }
            elseif($hasChild &&  $node['query_string']=="$get_sub_type_sec") {

                showMenu($node['id'],$site_url,$get_type_sec,$get_sub_type_sec);


            }

            echo "</li>";


    }
echo "</ul>";

}

Return Code

function showMenu($level = 0,$site_url,$get_type_sec,$get_sub_type_sec) {

$result = mysql_query("SELECT * FROM pages WHERE parent_id ='$level' order by navigation_order ASC"); 
$echo = "<ul>";
return = $echo;
    while ($node = mysql_fetch_array($result)) { 


            $result2 = mysql_query("SELECT * FROM pages WHERE id ='$node[parent_id]' order by navigation_order ASC"); 
             while ($node2 = mysql_fetch_array($result2)) {$node3="$node2[query_string]/";
             $noder="$node[id]"; 
             $result3 = mysql_query("SELECT * FROM pages WHERE id ='$node2[parent_id]' order by navigation_order ASC"); 
             while ($node3 = mysql_fetch_array($result3)) {$node2="$node3[query_string]/"; }
             }


            $echo .= "<li><a href='$site_url/$node2$node3$node[query_string]/'> $node[title] </a> ";
return = $echo;
            $hasChild = mysql_fetch_array(mysql_query("SELECT * FROM pages WHERE id ='$node[id]'")) != null;
            // If user request same page open menu 
            IF ($hasChild && $node['query_string']=="$get_type_sec") {
                showMenu($node['id'],$site_url,$get_type_sec,$get_sub_type_sec);    
            }
            elseif($hasChild &&  $node['query_string']=="$get_sub_type_sec") {

                showMenu($node['id'],$site_url,$get_type_sec,$get_sub_type_sec);
            }

            $echo .= "</li>";
            return = $echo;
    }
$echo .= "</ul>";
return = $echo;
}

Change return = $echo to return $echo;

it turns that I need to add echo when I call the function inside it self

//before
showMenu($node['id'],$site_url,$get_type_sec,$get_sub_type_sec);
//after
echo showMenu($node['id'],$site_url,$get_type_sec,$get_sub_type_sec);

the final code will be:

 function showMenu($level = 0,$site_url,$get_type_sec,$get_sub_type_sec) {

$result = mysql_query("SELECT * FROM pages WHERE parent_id ='$level' order by navigation_order ASC"); 
$menu= "<ul>";
return $menu;
    while ($node = mysql_fetch_array($result)) { 


            $result2 = mysql_query("SELECT * FROM pages WHERE id ='$node[parent_id]' order by navigation_order ASC"); 
             while ($node2 = mysql_fetch_array($result2)) {$node3="$node2[query_string]/";
             $noder="$node[id]"; 
             $result3 = mysql_query("SELECT * FROM pages WHERE id ='$node2[parent_id]' order by navigation_order ASC"); 
             while ($node3 = mysql_fetch_array($result3)) {$node2="$node3[query_string]/"; }
             }


            $menu.= "<li><a href='$site_url/$node2$node3$node[query_string]/'> $node[title] </a> ";
return $menu;
            $hasChild = mysql_fetch_array(mysql_query("SELECT * FROM pages WHERE id ='$node[id]'")) != null;
            // If user request same page open menu 
            IF ($hasChild && $node['query_string']=="$get_type_sec") {
                echo showMenu($node['id'],$site_url,$get_type_sec,$get_sub_type_sec);    
            }
            elseif($hasChild &&  $node['query_string']=="$get_sub_type_sec") {

                echo showMenu($node['id'],$site_url,$get_type_sec,$get_sub_type_sec);
            }

            $menu.= "</li>";
            return $menu;
    }
$menu.= "</ul>";
return  $menu;
}