Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/04/2011, 14:50
Jega_77
 
Fecha de Ingreso: abril-2011
Ubicación: El Salvador
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Leyendo archivos y agrupandolos

Saludos!
Mi problema es el siguiente:
Desde php leo una carpeta con muchos archivos mp3, todos inician
2008...titulo.mp3, 2009...titulo.mp3, 20010...titulo.mp3. Asi sucesivamente.

Lo que yo intento lograr es encerrar cada grupo de archivos segun el año, para poder generar un xml, de esta manera:

<Inicia 2008>
2008...titulo.mp3
2008...titulo.mp3
2008...titulo.mp3
<Termina 2008>

<Inicia 2009>
2009...titulo.mp3
2009...titulo.mp3
2009...titulo.mp3
<Inicia 2009>

<Inicia 2010>
2010...titulo.mp3
.......
<Inicia 2010>

Me gustaría lograrlo con los menos bucles posibles ya que son demasiados. Y mi método implica utilizar otro bucle para extraer el array final.

Espero puedan ayudarme con un ejemplo de cómo debo hacerlo.

He generado este código, pero al final me redunda los datos. De antemano muchas gracias.

Código:
$path="D:\wamp\www\leyendo\esto";
$dir=dir($path);
$contador=0;
$concatenar="";
$ano=2007;
$grupo = array();


	while ($elemento = $dir->read())
	{
		$laExtension=strtolower(end(explode('.',$elemento)));				
		if (($laExtension == 'mp3') and ($elemento != '.') and ($elemento != '..')){

			$ano_variante = substr($elemento, 0, 4)."<br/>";
						
			if($ano_variante!=$ano){ // Cuando cambie el año
				$ano=$ano_variante;
				if($contador==0){ //Intento crear el primer grupo en el array. arrya[0(abriendo),1(info),2(cerrando)]
				$contador_abrir=$contador;
				$contador_info=$contador_abrir+1;
				$contador_cerrar=$contador_info+1;
				
				$grupo[$contador_abrir]="Inicia";
				$grupo[$contador_cerrar]="Termina";
										
				}else{//intento crear los demas grupos.
				$contador_abrir=$contador*3;
				$contador_info=$contador_abrir+1;
				$contador_cerrar=$contador_info+1;					

				$grupo[$contador_abrir]="Inicia";
				$grupo[$contador_cerrar]="Termina";
				}			
				$contador++;	
			}

			$concatenar.="<br/>".$elemento;
			$grupo[$contador_info]=$concatenar;

		}
	}
$dir->close();
print_r ($grupo);