Revista Tecnología

Cómo encontrar la ruta de un elemento dentro de una jerarquía en PHP

Publicado el 16 marzo 2015 por Gaspar Fernández Moreno @gaspar_fm

Cómo encontrar ruta elemento dentro jerarquíaCómo encontrar la ruta de un elemento dentro de una jerarquía en PHP

Hace poco, hablábamos de cómo generar un array que contuviera una jerarquía de elementos, vimos cómo podíamos generarlo de forma muy rápida una vez tenemos todos los elementos en una lista en la que previamente indicamos el padre de cada uno de ellos.

El problema hoy es algo distinto, tenemos esa jerarquía o árbol, y queremos encontrar la ruta hacia arriba, es decir, todos los elementos por los que tenemos que pasar para llegar hasta un elemento dado. Puede ser útil cuando estén visitando nuestra página y accedan a algún elemento interior tras el cual queremos mostrar unas migas de pan o breadcrumbs (para ello tenemos que saber todo lo que hay por encima de la categoría actual).

Como ejemplo, vamos a hacer una jerarquía con paises / comunidades autónomas / provincias / ciudades y vamos a buscar una ciudad dentro de ese array (está simplificado en el ejemplo).

Ahora buscamos el elemento con id 17 (Linares), tras ello, el script debe devolver:

lo cual es la ruta desde Linares hacia atrás: Linares (17), Jaén (9), Andalucía (4), España (1), root (0).

Esta función findPath() ahora mismo, funciona sólo con colecciones creadas con buildTree(), por lo que es muy importante que se respeten los nombres de los elementos ( id de elemento, parentId para el id del elemento superior). De todas formas, podéis modificar estos algoritmos y os agradecería que comentaseis vuestros resultados.

Foto: Roberto Verzo (Flickr CC-by)

Leave a Reply


Volver a la Portada de Logo Paperblog