function start_menu($from) {
$res=mysql_query("SELECT id,sub_id,url,name FROM ".$from."
WHERE sub_id=0") or die(err_str(1002));
while($row=mysql_fetch_array($res))
/* Тут создается объект "ассоциативный массив"
MYSQL_ASSOC тут нету, так что каждый элемент наличествует в двух экземплярах */
{
menu($row['id'],$row['name'],"",$from);
}
}
function menu($id, $name, $url, $from) {
$res = mysql_query("SELECT id, sub_id, url, name FROM ".$from."
WHERE sub_id = $id") or die(err_str(1002));
/* Локальные переменные тоже вполне могут храниться в виде ассоциативного массива, в котором имени переменной сопоставлена величина вариантного типа */
if (mysql_num_rows($res) > 0)
{
echo "<LI><A HREF=\"#\" ONCLICK=\"return false\"> ".$name."</A></LI><UL>";
while($row = mysql_fetch_array($res))
/* Тут аналогичная ситуация */
{
menu($row['id'], $row['name'], $row['url'], $from);
/* А тут этот (эти) массив(ы) пихае(ю)тся в некий стек и формируется вызов самое себя. Кроме того, вполне возможно, что аргументы функции тоже передаются в виде массива вариантных значений (Я исподный код Zend не потрудился почитать) */
}
echo "</ul>";
}
else
{
echo "<LI><A HREF=\"".$url."\" target=\"io\">".$name."</A></LI>";
}
}