Foros del Web » Programando para Internet » PHP »

Extraer contenido de un array clasificado

Estas en el tema de Extraer contenido de un array clasificado en el foro de PHP en Foros del Web. Hola. Tengo 2 arrays. El primero es una lista de extensiones de archivo. Código PHP: $Extensiones  = array ( jpg ,  png ,  gif );  El 2o ...
  #1 (permalink)  
Antiguo 20/09/2006, 18:11
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Extraer contenido de un array clasificado

Hola.
Tengo 2 arrays.

El primero es una lista de extensiones de archivo.
Código PHP:
$Extensiones = array (jpgpnggif); 
El 2o Es una lista de archivos (está generada automáticamente) Tiene por ejemplo:
foto1.jpg, grafica2.gif, bolitas.png. Este se llama digamos $Lista.

Lo que necesito es, basándome en el array uno, comparar el contenido del 2 para extraer el contenido agrupado por extensiones.


Antes estaba usando unos
Código PHP:
 elseif (ereg("(jpg)$"$file)) {
 
$ListaJpg[]=$file;}

 elseif (
ereg("(png)$"$file)) {
 
$ListaPng[]=$file;}...

y luego
for ($x 0$x count($ListaJpg); $x++){ 
    echo 
"$ListaJpg[$x] 
    <br />\r\n"
;} 
Pero ahora, con 2 arrays, uno con las extensiones y otro con archivos se me hacen unos loops interminables.

Las cositas por separado ya no me espantan, pero juntar pedazos más grandes se me complica.

estoy viendo funciones como foreach, pero :)
  #2 (permalink)  
Antiguo 20/09/2006, 18:14
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Disculpa la respuesta tan incompleta... Quizá esto te sirva...

http://cl.php.net/manual/en/function.in-array.php


Nos vemos =)
  #3 (permalink)  
Antiguo 24/09/2006, 13:17
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Gracias, el manual en cuestión ya lo tengo.
Lo que no tengo es la experiencia, :) y es la que ando trabajando.

Estoy estudiando array_walk... a ver si por ahí... (...le encuentro o a ver si por ahí alguien más me socorre)
  #4 (permalink)  
Antiguo 27/09/2006, 10:02
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Humm... ¿Algún otra alma caritativa?
  #5 (permalink)  
Antiguo 27/09/2006, 10:53
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 4 meses
Puntos: 4
CHECA ESTE CODIGO QUE TE ACABO DE HACER, ESTUDIALO Y HASTA TE PODRIA SERVIR PARA OTRAS EXTENSIONES DE ARCHIVOS (COMO LAS DE VIDEO POR DECIR ALGUN EJEMPLO):

<?php
$extensiones = array ( 'jpg', 'png', 'gif' );
$lista = array ( 'foto1.jpg', 'grafica2.gif', 'bolitas.png', 'llanta.png', 'alfo.jpg', 'otro.jpg' );

for ( $e = 0; $e < count ( $lista ); $e++ )
{
$imagen = $lista[ $e ];

for ( $i = 0; $i < count ( $extensiones ); $i++ )
{
$formato = $extensiones[$i];

if ( strpos ( $imagen, $formato ) )
{
${$extensiones[$i]} .= $imagen."<br/>";
}
else
{
continue;
}
}
}
echo "Las imagenes .jpg que se encontraron son las siguientes: <br/>".$jpg."<p>";
echo "Las imagenes .gif que se encontraron son las siguientes: <br/>".$gif."<p>";
echo "Las imagenes .pngf que se encontraron son las siguientes: <br/>".$png."<p>";
?>

ESPERO SEA LO QUE NECESITABAS O POR LO MENOS TE AYUDE A DARTE UNA IDEA. SUERTE
  #6 (permalink)  
Antiguo 27/09/2006, 10:55
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 4 meses
Puntos: 4
CHECA ESTE CODIGO QUE TE ACABO DE HACER, ESTUDIALO Y HASTA TE PODRIA SERVIR PARA OTRAS EXTENSIONES DE ARCHIVOS (COMO LAS DE VIDEO POR DECIR ALGUN EJEMPLO):

<?php
$extensiones = array ( 'jpg', 'png', 'gif' );
$lista = array ( 'foto1.jpg', 'grafica2.gif', 'bolitas.png', 'llanta.png', 'alfo.jpg', 'otro.jpg' );

for ( $e = 0; $e < count ( $lista ); $e++ )
{
$imagen = $lista[ $e ];

for ( $i = 0; $i < count ( $extensiones ); $i++ )
{
$formato = $extensiones[$i];

if ( strpos ( $imagen, $formato ) )
{
${$extensiones[$i]} .= $imagen."<br/>";
}
else
{
continue;
}
}
}
echo "Las imagenes .jpg que se encontraron son las siguientes: <br/>".$jpg."<p>";
echo "Las imagenes .gif que se encontraron son las siguientes: <br/>".$gif."<p>";
echo "Las imagenes .pngf que se encontraron son las siguientes: <br/>".$png."<p>";
?>

ESPERO SEA LO QUE NECESITABAS O POR LO MENOS TE AYUDE A DARTE UNA IDEA. SUERTE
  #7 (permalink)  
Antiguo 27/09/2006, 12:03
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 4 meses
Puntos: 4
Espero si puedas ver la respuesta porque tuve problemas con mi internet.

  #8 (permalink)  
Antiguo 27/09/2006, 17:40
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Ok lo voy a estudiar, creo que la palabra mágica es
if ( strpos ( $imagen, $formato ) )

Gracias.

Corrijo la palabra mágica experiencia. :)

Última edición por Rafael; 27/09/2006 a las 17:55
  #9 (permalink)  
Antiguo 27/09/2006, 18:13
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 7 meses
Puntos: 0
Si pues el secreto esta en if(strpos ($li,$ext))

aqui un ejemplo donde te hago un arreglo de dos niveles.

<?php
$extensiones = array ( 'jpg', 'png', 'gif' );
$lista = array ( 'foto1.jpg', 'grafica2.gif', 'bolitas.png', 'llanta.png', 'alfo.jpg', 'otro.jpg','este.dec' );

$matriz = array();
foreach($lista as $li){
$existe = 0;
foreach($extensiones as $ext){
if(strpos ($li,$ext)){
$matriz[$ext][]= $li;
$existe = 1;
}
}
if(!$existe){
$matriz["desconocido"][]= $li;
}
}


print_r($matriz);
?>

el problema aqui es que si tienes un achivo que se llame junitojpg.gif vas a tener problemas.
Puedes pare ello buscar no solo la extension sino el ".".$exension
talves un preg_match pueda ayudar si quieres complicarte

<?php
$extensiones = array ( 'jpg', 'png', 'gif' );
$lista = array ( 'foto1.jpg', 'grafica2.gif', 'bolitas.png', 'llanta.png', 'alfo.jpg', 'otro.jpg','este.dec','juanitopng.jpg' );

$matriz = array();
foreach($lista as $li){
$existe = 0;
foreach($extensiones as $ext){
if(preg_match("@[^.]*[\.]{1}$ext@Ux",$li)){
$matriz[$ext][]= $li;
$existe = 1;
}
}
if(!$existe){
$matriz["desconocido"][]= $li;
}
}


print_r($matriz);
?>

Última edición por seyacat; 27/09/2006 a las 18:22
  #10 (permalink)  
Antiguo 27/09/2006, 18:41
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Gracias, justo acabo de detectar ese problema (Gifejemplo.PNG) y opté por una expresión regular, que además me corrige el problema del Case-sensitive.

Cita:
if (eregi ("(\.$formato)$", $imagen)){
Voy a estudiar la opción del foreach, ya que como soy novatón, apenas los loops de for son con los que estoy trabajando.

Última edición por Rafael; 27/09/2006 a las 18:52
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:14.