Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2013, 13:25
cyberjas2001
 
Fecha de Ingreso: marzo-2013
Mensajes: 26
Antigüedad: 11 años, 1 mes
Puntos: 0
Pregunta Menu Recursivo de PHP solo imprime primer articulo

Estoy creando un menu recursivo el cual al dar click en cada elemento abrira un PDF en un objeto Embed, q se encuentra en la parte inferior de la pagina, todo funciona con el primer elemento, pero cuando debe crear el segundo elemento de cada año no lo hace, ese es mi problema, yo se no es algo complicado pero no encuentro solucion a esto, aqui mi codigo PHP:

Código PHP:
<?php
echo "<div id='cssmenu'>";
echo 
"<ul>";
echo 
"<li class='has-sub last'><a href='#'><span>Please select a Year</span></a>";
echo 
"<ul>";
$dir = new DirectoryIterator('/usr/apps/webdata/backend/assets/newsletters/temp');
$list = array();
foreach(
$dir as $file)
{
    if(
$file->isDot())
        continue;

        
$string $file;                            
                    if(
preg_match_all("#(\d{1,})#"$string$matchesPREG_SET_ORDER)) 
                    {
                            foreach(
$matches as $match
                              {
                            
$issue $match[0];
                            
                                while (list(
$key$value) = each($match)) 
                                {
                                
//TOMA EL AÑO
                                    
if (strlen ($value) == 4)
                                    {
                                    
$uyear $value;
                                    
//echo "Year: $uyear \n";
                                    
}
                                
// TOMA EL NUMERO DE ARTICULO
                                    
elseif (strlen ($value) == 1)
                                    {
                                    
$uissue $value;
                                    
//echo "Issue: $uissue \n";
                                    
}
                            
                                 }
                        
                            }
                    }    
//CREA EL BUCLE POR CADA AÑO
    
if(!isset($list[$uyear]))
    {
        
$list[$uyear] = array();
        echo 
"<li class='has-sub'><a href='#'><span>" $uyear " </span></a>";
    }    
    echo 
"<ul>";
//CREA EL BUCLE POR CADA ARTICULO DE CADA AÑO
    
if(!in_array($uissue$list[$uyear]))
    {
           
$list[$uyear][] = $uissue;
        
$a count($uissue);
        for(
$i=0;$i<$a$i++)
            {
                echo 
"<li class='last'><a href='#' onclick=myPDF('".$file."')> Issue# ".$uissue."</a></li>";
            }            
    }
            
    echo 
"</ul>";
    echo 
"</li>";
}
echo 
"</ul>";
echo 
"</li>";
echo 
"</ul>";
echo 
"</div>";    
                               
?>
Mi problema esta en el bucle donde se deberia imprimir cada Numero de Articulo, especificamente aqui:

Código PHP:
if(!in_array($uissue$list[$uyear]))
    {
           
$list[$uyear][] = $uissue;
        
$a count($uissue);
        for(
$i=0;$i<$a$i++)
            {
                echo 
"<li class='last'><a href='#' onclick=myPDF('".$file."')> Issue# ".$uissue."</a></li>";
            }            
    } 
Mi Foreach termina en el primer articulo q encuentra y deja de crear las ramas del menu, esta es mi impresion de pantalla:

Código:
Array
(
    [2014] => Array
        (
            [0] => 2
        )

    [2013] => Array
        (
            [0] => 1
        )

    [2015] => Array
        (
            [0] => 2
        )

)
Cuando en realidad deberia ser esta:
Código:
Array
(
    [2014] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 3
            [3] => 1
        )

    [2013] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 4
            [3] => 2
        )

    [2015] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 3
            [3] => 1
        )

)
Y tambien necesito ordenar mi respuesta por Año y por Numero de Articulo, he intentado con asort(), pero no he obtenido el resultado q ando buscando, alguien q me puede ayudar? gracias amigos!!!

Última edición por cyberjas2001; 02/04/2013 a las 13:31