Ya está... He visto mi error. Le mandaba "$sub_basicas" en lugar de "$basicas". En la que le mandaba, sólo tenía las direcciones. En cambio, en la otra tenía ambas en un array asociativo (el nombre y la dirección, extraida de su posición en la variable que por error le mandaba)
He tenido que incluir todas esas variables en la función, para que fuesen globales, cambiando las que tenían el "sub_" y añadiento las que tenían "dir_" y la propia "nav". Quizá de ahí venía también el error. Del hecho de que le enviaba el nav simplemente... y usaba como referencia las variables equivocadas.
Ahora está así la función, pero me gustaría saber, antes de darlo por solucionado, si se puede ahorrar código.
Fuera de la función: exactamente igual, solo que ahora no son necesarios los parámetros...)
La función:
Código PHP:
Ver originalfunction submenu () {
global $nav, $basicas, $fofuchas, $literatura, $especiales, $dir_basicas, $dir_fofuchas, $dir_literatura, $dir_especiales;
$sub;
$dir;
foreach ($nav as $e) {
switch($e) {
case "Manualidades básicas":
$sub = $basicas;
$dir = $dir_basicas;
break;
case "Fofuchas":
$sub = $fofuchas;
$dir = $dir_fofuchas;
break;
case "Literatura":
$sub = $literatura;
$dir = $dir_literatura;
break;
default:
$sub = $especiales;
$dir = $dir_especiales;
break;
};
echo "<li><a href=\"$dir\">$e</a>
<ul>";
foreach ($sub as $nombre => $direccion) {
echo "<li><a href =\"$direccion\">$nombre</a></li>";
}
echo " </ul>
</li>"; }
}