Location: PHPKode > scripts > List > list/Ejemplo2.php
<?php
/******************************************************************************
 *	   BBBB	     AAA    RRRR    BBBB      AAA    ZZZZZZ  U     U  L           *
 *	   B   B	A	A	R	R   B   B	 A   A       ZZ  U     U  L           *
 *	   B   B   A	 A  R	R   B   B	A	  A	    ZZ   U     U  L           *
 *	   BBBB	   A	 A  RRRR    BBBB    A     A     Z    U     U  L           *
 *	   B   B   AAAAAAA  R  R    B   B   AAAAAAA    Z     U     U  L           *
 *     B    B  A     A  R   R   B    B  A     A   ZZ     U     U  L           *
 *     B    B  A     A  R    R  B    B  A     A  ZZ       U   U   L           *
 *     BBBBB   A     A  R    R  BBBBB   A     A  ZZZZZZ    UUU    LLLLLLL     *
 ******************************************************************************/

/* Ejemplo de utilización de Lista Genérica en múltiples niveles
 * Descripción: En este ejemplo se muestra el uso de una lista encadenada
 * utilizando datos de tipo Objeto.
 * Autor: Matías Montes
 * Versión : 2.0
 */

/******************************************************************************/
/* Librerías y definiciones requeridas */
/*-------------------------------------*/

require_once("class.Lista.php");

if( !defined("MAX") ) define("MAX", 10);


class Nivel1
{
	var $clave;
    var $sublista;

    function Nivel1($clave)
    {
    	$this->clave = $clave;
        $this->sublista = new Lista("CompararNivel2");
    }
}

function CompararNivel1($DatoEnteroIzq , $DatoEnteroDer)
{
   $resultado = IGUAL;

   if ( ($DatoEnteroIzq->clave) == ($DatoEnteroDer->clave) ) $resultado = IGUAL;
   if ( ($DatoEnteroIzq->clave) >  ($DatoEnteroDer->clave) ) $resultado = MAYOR;
   if ( ($DatoEnteroIzq->clave) <  ($DatoEnteroDer->clave) ) $resultado = MENOR;

   return resultado;
}

function CompararNivel2($DatoEnteroIzq , $DatoEnteroDer)
{

   $resultado = IGUAL;

   if ( ($DatoEnteroIzq) == ($DatoEnteroDer) ) $resultado = IGUAL;
   if ( ($DatoEnteroIzq) >  ($DatoEnteroDer) ) $resultado = MAYOR;
   if ( ($DatoEnteroIzq) <  ($DatoEnteroDer) ) $resultado = MENOR;

   return $resultado;
}

/******************************************************************************/
/* Programa Principal */
/*--------------------*/

//Instancio la lista de Nivel 1
$L = new Lista("CompararNivel1");

//Cargo la lista en 2 niveles
for( $i=0 ; $i<MAX ; $i++ )
{
	$datoN1 = new Nivel1($i);
    for( $j=1 ; $j<MAX ; $j++ )
    {
    	$datoN2 = $j + $i * MAX;
        $datoN1->sublista->insertarDato($datoN2);
    }
    $L->insertarDato($datoN1);
}

//Imprime el contenido de la lista
$cursor1 = $L->primero();

echo "<UL>\n";
while( $cursor1!=$L->fin() )
{
	$datoN1 = $L->getDato($cursor1);
    echo "  <LI>".$datoN1->clave."\n";
    echo "    <UL>\n";

    $cursor2 = $datoN1->sublista->primero();
    while( $cursor2!=$datoN1->sublista->fin() )
    {
    	$datoN2 = $datoN1->sublista->getDato($cursor2);
        echo "      <LI>".$datoN2."</LI> \n";
        $cursor2 =& $datoN1->sublista->siguiente($cursor2);
    }

    echo "    </UL>\n";
    echo "  </LI>\n";

    $cursor1 =& $L->siguiente($cursor1);
}
echo "</UL>\n";

//Destruyo la lista
$L->destruir();
?>
Return current item: List