Tienes razón, esta parece ser la causa. Entonces, entiendo que si antes de usar $this, pongo global $pag, ya me deja. Lo he probado y ya no da ningún error. Gracias por la ayuda.
Ahora no tiene ningún error, pero tampoco devuelve nada :D He hecho dos correcciones las funciones, y ahora que están todavía mejor, siguen sin funcionar.
Código PHP:
/**
* Funcion que uso para pasar el arbol y asi simplificar al maximo el codigo en el tema
* @return string La lista definitiva
*/
function imprimir_categorias(){
global $pag;
return recorrerCategoriasPadre($pag->crearArbolCategorias());
}
/**
* Funcion que recibe un arbol, recorre cada una de las categorias padre y se las
* da a recorrerCategoriasHijas para que las imprima y recorra sus hijos.
* @param array Un arbol de categorias
* @return string El listado de todas las categorias
*/
function recorrerCategoriasPadre($arbol){
$html="
<ul>";//empezamos la lista
foreach($arbol as $padre){ //por cada padre que haya
$html.=recorrerCategoriasHijas($padre); //empezamos a recorrer
}
$html.="
<ul>";//cerramos la lista
return $html; //retornamos la lista completa
}
/**
* Funcion que recorre cada categoria y sus hijos
* @param array $arbol Un arbol de categorias
* @return string Lista con cada categoria y sus hijos
*/
function recorrerCategoriasHijas($arbol){
//imprimimos la categoria padre en cuestion
$html="<li>
<input type=\"checkbox\" name=\"cb{$arbol[0]['id']}\" id=\"cb{$arbol[0]['id']}\" />
<label for=\"cb{$arbol[0]['id']}\">{$arbol[0]['nombre']}</label>";
if(isset($arbol[1])){//y si tiene hijos
for($i=1;$i<count($arbol);$i++){//los recorremos tambien, imprimiendolos
$html.="
<ul>";//abrimos una lista anidada
$html.=recorrerCategoriasHijas($arbol[$i]);
$html.="
<ul>";//la cerramos
}
}
$html.="
</li>";//cerramos la categoria padre
return $html; //retornamos la seccion
}
Las categorías que lee están en el código del primer mensaje, en el 5º párrafo. El array es iterable, salió exactamente como quería. Además lo acabo de volver a comprobar.
El problema es que no devuelven nada estas 3 funciones.
¿Alguna idea de por qué?
He probado a poner un var_dump del array de categorías que recorre, y si que se imprimen.
Gracias de antemano