Foros del Web » Programando para Internet » PHP »

array segun file_exists

Estas en el tema de array segun file_exists en el foro de PHP en Foros del Web. como se puede crear un array que varie segun que ficheros existan(file_exists)? siendo Código PHP: $imagen1mod  =  "img/imagennumero1.jpg" ; $imagen2mod  =  "img/imagennumero2.jpg" ;  $imagen3mod  =  ...
  #1 (permalink)  
Antiguo 23/08/2010, 20:44
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 16 años, 7 meses
Puntos: 1
De acuerdo array segun file_exists

como se puede crear un array que varie segun que ficheros existan(file_exists)?
siendo
Código PHP:
$imagen1mod "img/imagennumero1.jpg";
$imagen2mod "img/imagennumero2.jpg"
$imagen3mod "img/imagennumero3.jpg"
ej:si existe el archivo $imagen1mod
Código PHP:
$contlogo=array("1.jpg"=> file_get_contents($imagen1mod), 
si existe $imagen1mod , $imagen2mod y $imagen3mod

Código PHP:
$contlogo=array("1.jpg"=> file_get_contents($imagen1mod),
                
"2.jpg"=> file_get_contents($imagen2mod),
                
"3.jpg"=> file_get_contents($imagen3mod), 
y asi tantos como archivos existan.
  #2 (permalink)  
Antiguo 23/08/2010, 20:55
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: array segun file_exists

o recorres el array en un ciclo verificando si el archivo existe y eliminándolo (unset($array[$pos]);), o recorres el directorio filtrando por el tipo de archivo
  #3 (permalink)  
Antiguo 23/08/2010, 21:09
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: array segun file_exists

Cita:
Iniciado por maycolalvarez Ver Mensaje
o recorres el array en un ciclo verificando si el archivo existe y eliminándolo (unset($array[$pos]);), o recorres el directorio filtrando por el tipo de archivo
podrias darme un ejemplo con unset?
pls
  #4 (permalink)  
Antiguo 23/08/2010, 21:19
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: array segun file_exists

Código PHP:
Ver original
  1. //primero lo llenamos con las posibles rutas (path)
  2. $contlogo=array(
  3. "1.jpg" => "img/imagennumero1.jpg",
  4. "2.jpg" => "img/imagennumero2.jpg",
  5. "3.jpg" => "img/imagennumero3.jpg",
  6. );
  7. //lo recorremos y si existe, reemplazamos las rutas por el contenido (según lo que tienes @alexisfch)
  8. foreach($contlogo as $key => $value){
  9.     if(file_exists($value)){
  10.         $contlogo[$key] = file_get_contents($value);
  11.     }else{
  12.         unset($contlogo[$key]);
  13.     }
  14. }
al final obtienes lo que necesitas
  #5 (permalink)  
Antiguo 24/08/2010, 09:03
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: array segun file_exists

Cita:
Iniciado por maycolalvarez Ver Mensaje
al final obtienes lo que necesitas
mira lo hice como mencionaste pero no se logra construir el array correctamente
te muestro el code.

Código PHP:
if(file_exists("tmp/".$_GET['products_id']."conlogo.zip")) {  
}else {
include(
"createzipconlogo.php");
$imagen1 "images/"$product_info['products_image_med'];
$imagen2 "images/"$product_info['products_image_xl_1'];
$imagen3 "images/"$product_info['products_image_xl_2'];
$imagen4 "images/"$product_info['products_image_xl_3'];
$imagen5 "images/"$product_info['products_image_xl_4'];
$imagen6 "images/"$product_info['products_image_xl_5'];
$imagen7 "images/"$product_info['products_image_xl_6'];

//borrando los espacios
$imagen1mod=str_replace(' ',"%20",$imagen1);
$imagen2mod=str_replace(' ',"%20",$imagen2);
$imagen3mod=str_replace(' ',"%20",$imagen3);
$imagen4mod=str_replace(' ',"%20",$imagen4);
$imagen5mod=str_replace(' ',"%20",$imagen5);
$imagen6mod=str_replace(' ',"%20",$imagen6);
$imagen7mod=str_replace(' ',"%20",$imagen7);

$contlogo=array(
"1.jpg" => $imagen1mod,
"2.jpg" => $imagen2mod
"3.jpg" => $imagen3mod,
"4.jpg" => $imagen4mod,
"5.jpg" => $imagen5mod
"6.jpg" => $imagen6mod,
"7.jpg" => $imagen7mod,
);

foreach(
$contlogo as $key => $value){
    if(
file_exists($value)){
        
$contlogo[$key] = file_get_contents($value);
    }else{
        unset(
$contlogo[$key]);
    }
}
//construyendo el zip con solo los archivos que existen
createziplogo($contlogo,"tmp/".$_GET["products_id"]."conlogo.zip") or die("Error: al construir el ZIP.");

el createzipconlogo.php
Código PHP:
function createziplogo($struct,$namezip=0)
{     
$ZipData = array(); 
    
$Dircont = array(); 
    
$DirFile = array();
    
$offseto 0;        
    while(list(
$file,$data)=each($struct))
    {    
$filestr_replace("\\""/"$file);  
        
$dir=explode("/",$file);
        for(
$i=0$i<sizeof($dir); $i++)if($dir[$i]=="")unset($dir[$i]);                    
        
$num=count($dir); //Total de niveles
        
$ele=0;            //Nivel actual
        
$dirname="";      //Nombre archivo o directorio
        
while(list($idx,$val)=each($dir))
        {    
$ty=(++$ele)==$num?true:false;
            
$ty=trim($data)!=""?$ty:false;//Compruebar si el ultimo elemento es directorio o archivo
            
$dirname.=$val.($ty?"":"/");
            if(isset(
$DirFile[$dirname]))continue; else $DirFile[$dirname]=true;            
            
$gzdata="";                
            if(
$ty)
            {    
$unziplen=strlen($data);  
                
$czip=crc32($data);  
                
$gzdata=gzcompress($data);  
                
$gzdata=substr(substr($gzdata,0,strlen($gzdata)-4),2); 
                
$cziplen=strlen($gzdata);  
            }                        
            
$ZipData[]="\x50\x4b\x03\x04".($ty?"\x14":"\x0a")."\x00\x00\x00".($ty?"\x08":"\x00")."\x00\x00\x00\x00\x00".
                       
pack("V",$ty?$czip:0).pack("V",$ty?$cziplen:0).pack("V",$ty?$unziplen:0).pack("v",strlen($dirname)). 
                       
pack("v",0).$dirname.$gzdata.pack("V",$ty?$czip:0).pack("V",$ty?$cziplen:0).pack("V",$ty?$unziplen:0);
            
$Dircont[]="\x50\x4b\x01\x02\x00\x00".($ty?"\x14":"\x0a")."\x00\x00\x00".($ty?"\x08":"\x00")."\x00\x00\x00\x00\x00".
                       
pack("V",$ty?$czip:0).pack("V",$ty?$cziplen:0).pack("V",$ty?$unziplen:0).pack("v",strlen($dirname)). 
                       
pack("v").pack("v",0).pack("v",0).pack("v",0).pack("V",$ty?32:16).pack("V",$offseto).$dirname;          
            
$offseto=strlen(implode("",$ZipData));            
        }
//Fin While dir        
    
}//Fin While archivos
    
$data implode("",$ZipData);  
    
$cdir implode("",$Dircont);      
    
$data=$data.$cdir."\x50\x4b\x05\x06\x00\x00\x00\x00".pack("v",sizeof($Dircont)).pack("v",sizeof($Dircont)).pack("V",strlen($cdir)).pack("V",strlen($data))."\x00\x00";
    if(
$namezip)//Construir el archivo
    
{    if(($fp=fopen($namezip,"wb")))
           {    
fwrite($fp,$data);
            
fclose ($fp);
            return 
true;
        }else return 
false;
    }else return 
$data;       

  #6 (permalink)  
Antiguo 24/08/2010, 19:49
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: array segun file_exists

No se si ya resolviste tu problema, pero por si acaso, te dejo un enlace que contiene una clase donde recorre directorios y extrae los archivos que contiene en el, al final te retorna un arreglo con los nombres de archivos que ya es seguro que existen....
Clase Directorio

Saludos
P.D.: Cualquier cosa que te sirva y tengas alguna duda a las ordenes...
No deje la clase aquí para no hacer extenso el post y como no se si te podría ser de utilidad...
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp

Etiquetas: Ninguno
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 16:05.