Foros del Web » Programando para Internet » PHP »

arrays asociativos

Estas en el tema de arrays asociativos en el foro de PHP en Foros del Web. Hola quetal tengo un problema algo torpe pero la verdad no se como solucionarlo tengo una funcion a la cual el paso como parametro un ...
  #1 (permalink)  
Antiguo 03/02/2009, 18:55
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
arrays asociativos

Hola quetal tengo un problema algo torpe pero la verdad no se como solucionarlo
tengo una funcion a la cual el paso como parametro un array ese array son los campos de un formulario y lo que hace la funcion es evaluar el $value del campo y comprobar si tiene espacios en blanco y quitarlos con la funcion trim(); y de esta manera estoy contruyendo un nuevo array asociativo con los nuevos valores sin espacios.

Pero el problema es cuando trato de decirle al nuevo array $nuevos_datos que valla tomando los valores asignados en la diferentes posiciones

Espero entiendan

Código PHP:
function quitar_espacios($array)
    {
        
$s=0;
        
$nuevos_datos=array();
        foreach(
$array as $key => $value)
        {
            
$value=trim($value);
            
$nuevos_datos[$s]=$key=>$value;  //logicamente aqui esta el error pero no se como arreglarlo y decirle que en la posicion 0 se ha igual a esos valores y aumente
            
$s++;
                    
        }
        return 
$this->Campos=$nuevos_datos;
        
    } 
  #2 (permalink)  
Antiguo 03/02/2009, 19:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: arrays asociativos

return $this->Campos=$nuevos_datos;

Esa instruccion te va a regresar el resultado de la asignacion, como no creo que haya problemas, seguramente devuelve true.

Si deseas almacenar la matriz:
$this->Campos = $nuevos_datos;

Si, adicionalmente deseas retornarla como valor de la funcion:
return $this->Campos;
o:
return $nuevos_datos;
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 03/02/2009, 19:54
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: arrays asociativos

No el problema no esta en los valores que retorna la funcion el problema es que estoy tratando de construir una nueva matriz asociativa con los nuevos valores que voy obtenidos del foreach precisamente esta es la linea donde trato de relaizar eso

$nuevos_datos[$s]=$key=>$value;

pero pues me marca errror Parse error: syntax error, unexpected T_DOUBLE_ARROW in C:\xampp\htdocs\blog\clases.php on line 29 y no se como arreglarlo

Salu2
  #4 (permalink)  
Antiguo 03/02/2009, 19:57
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: arrays asociativos

Cita:
Iniciado por acoevil Ver Mensaje
Hola quetal tengo un problema algo torpe pero la verdad no se como solucionarlo
tengo una funcion a la cual el paso como parametro un array ese array son los campos de un formulario y lo que hace la funcion es evaluar el $value del campo y comprobar si tiene espacios en blanco y quitarlos con la funcion trim(); y de esta manera estoy contruyendo un nuevo array asociativo con los nuevos valores sin espacios.

Pero el problema es cuando trato de decirle al nuevo array $nuevos_datos que valla tomando los valores asignados en la diferentes posiciones

Espero entiendan

Código PHP:
function quitar_espacios($array)
    {
        
$s=0;
        
$nuevos_datos=array();
        foreach(
$array as $key => $value)
        {
            
$value=trim($value);
            
$nuevos_datos[$s]=$key=>$value;  //logicamente aqui esta el error pero no se como arreglarlo y decirle que en la posicion 0 se ha igual a esos valores y aumente
            
$s++;
                    
        }
        return 
$this->Campos=$nuevos_datos;
        
    } 

Ok, te estás confundiendo un poco, a lo mejor esta expresión $array as $key => $value te raya un poco. Tienes dos opciones, si lo que quieres es conservar las mismas claves no tienes más que hacer esto:


Código PHP:
function quitar_espacios($array)
    {
        
$nuevos_datos=array();
        foreach(
$array as $key => $value)
        {
            
$value=trim($value);
            
$nuevos_datos[$key] = $value;              
                
        }
        return 
$this->Campos=$nuevos_datos;
        
    } 
Ahora si quieres hacer que las claves empiezen desde 0 hasta lo que dé, pues nada más este sería el código:

Código PHP:
function quitar_espacios($array)
    {
                $ = 
0;
        
$nuevos_datos=array();
        foreach(
$array as $key => $value)
        {
            
$value=trim($value);
            
$nuevos_datos[$s] = $value;              
            
$s ++;    
        }
        return 
$this->Campos=$nuevos_datos;
        
    } 

No veo que haya otra opción.
  #5 (permalink)  
Antiguo 03/02/2009, 20:00
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: arrays asociativos

Sorry, esa linea esta mal:

Código PHP:
$nuevos_datos[$key] = $value
Como dices que quieres mantener los mismos indices para que siga siendo asociativa se asigna con $key, porque si lo asignas con $s se convierte en numerica y el indice original de pierde.

Edito: Me ganaste, Eljavista
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 03/02/2009, 20:12
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: arrays asociativos

siii eso era lo que pasaba ahora con el $nuevos_datos[$key] = $value; conservo la matriz asociativa lo se hacer perfectamente para arrays numericos pero nunca se me habia cruazado hacerlo en este tipo de arrays muchas gracias por sus ayudas
  #7 (permalink)  
Antiguo 03/02/2009, 20:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: arrays asociativos

De hecho si solo quieres aplicar trim() porque no usas array_walk?

Código php:
Ver original
  1. function quitar_espacios($array) {
  2.         array_walk($array, 'trim');
  3.         return $this->Campos=$array;
  4. }

Saludos
  #8 (permalink)  
Antiguo 03/02/2009, 21:50
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: arrays asociativos

Exelente tu solucion GatorV
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 17:26.