Foros del Web » Programando para Internet » PHP »

Meter el valor de una variable en una posicion concreta de un array

Estas en el tema de Meter el valor de una variable en una posicion concreta de un array en el foro de PHP en Foros del Web. Hola amigos miren a ver si me pueden ayudar con esto: yo se meter con array_push , valores en un array. Pero como puedo meter ...
  #1 (permalink)  
Antiguo 17/04/2015, 06:15
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Meter el valor de una variable en una posicion concreta de un array

Hola amigos miren a ver si me pueden ayudar con esto:

yo se meter con array_push , valores en un array.

Pero como puedo meter el valor de una variable en la posicion 5 del array, por ejemplo¿?


Osea meter el valor de $email en la posicion 5 dentro del array.

Código PHP:
Ver original
  1. array_push($array_datos,  $email);


Gracias de antemano.
  #2 (permalink)  
Antiguo 17/04/2015, 07:16
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Bueno creo que he dado con la solucion seria asi , por lo menos me funciona bien:

Código PHP:
Ver original
  1. array_splice( $array_datos, 5, 0, $email );

Ahora el problema que tengo y que estoy atascado es: como puedo dar un nombre al indice de esta variable $email¿?

Por ejemplo que el nombre del indice se llamase "contacto" y su valor pues el del email claro esta.


help please!!!
  #3 (permalink)  
Antiguo 17/04/2015, 07:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Si tu array es indexado, entonces el índice es numérico, por lo tanto no tiene nombre.

Si fuera un array asociativo pudiste agregar el elemento así:
Código PHP:
Ver original
  1. $array_datos['el_indice_para_el_email'] = $email;

Es decir, sólo puedes usar un estilo y otro, no ambos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 17/04/2015, 07:27
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Te refieres a sacar el valor nuvo añadido y llamarlo contacto?

Sería así:

$contacto = $array_datos[5];

Seguramente no sea lo que buscas hacer. Pués podrias explicar más detalladamente?

Un saludo.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #5 (permalink)  
Antiguo 17/04/2015, 08:18
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Meter el valor de una variable en una posicion concreta de un array

A ver , si, es un array asociativo concretamente este:

Código PHP:
Ver original
  1. $array_datos = array(
  2.            
  3.                 'nombre'=>$nombre,
  4.                 'apellidos'=>$apellidos,
  5.                 'nick'=>$nick,
  6.            
  7.                 'password'=>$password, 
  8.                 'repassword'=>$repassword,             
  9.                 'sexo'=>$sexo,
  10.                 'dia'=>$dia,
  11.                 'mes'=>$mes,
  12.                 'ano'=>$ano
  13.                            
  14.             );


En dicho array es donde quiero insertar, en una posicion determinada del array, el valor $email con el indice llamado: "contacto"

para lo cual tengo esto:

Código PHP:
Ver original
  1. array_splice( $array_datos, 3, 0, $email );


ahora bien, segun dices pateketrueke debo hacerlo asi:

Código PHP:
Ver original
  1. $array_datos['email'] = $email;

pero no termino de enterder como implementar lo que me dices , no lo termino de entender.

MaNuX0218, espero que ahora este mas claro lo que me me falta.
  #6 (permalink)  
Antiguo 17/04/2015, 10:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Si tienes un array asociativo no existen la posiciones, sólo hay índices.

Ahora, no entiendo que habrás hecho porque funciona perfecto:
Código PHP:
Ver original
  1. $array_datos = array(
  2.   'x' => 'y'
  3. );
  4.  
  5. $email = '[email protected]';
  6.  
  7. $array_datos['email'] = $email;
  8.  
  9. var_dump($array_datos);

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 18/04/2015, 10:19
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Bueno parece que ya lo he conseguido que funcione, es decir

que meta el valor del email (con su indice llamado contacto), en el lugar indicado.

Pero me queda una pregunta , cuento lo que pasa:

Antes que nada el codigo:

Código PHP:
Ver original
  1. $array_datos = array(
  2.            
  3.                 'nombre'=>$nombre,
  4.                 'apellidos'=>$apellidos,
  5.                 'nick'=>$nick,
  6.                 'email'=>'',
  7.                 'movil'=>'',               
  8.                 'password'=>$password, 
  9.                 'repassword'=>$repassword,             
  10.                 'sexo'=>$sexo,
  11.                 'dia'=>$dia,
  12.                 'mes'=>$mes,
  13.                 'ano'=>$ano
  14.                            
  15.             );
  16.  
  17.  
  18. array_push($array_datos, ($array_datos['email'] = $email));


Bien esto tiene como resultado esto otro:

nombre: Dexter
apellidos: Morgan Lopez
nick: Dex
contacto: [email protected]
password: blablabla
repassword: blablabla
sexo: mujer
dia: 14
mes: 9
ano: 2009
0: [email protected]


Si se fijan el "email" esta bien ubicado y tambien con su indice llamado "contacto" y su valor, osea el email correspondiente.

pero el problema es que me genera al final del todo esto:

0: [email protected]


y no se por que lo hace.

por eso me veo en la obligacion de poner un :

Código PHP:
Ver original
  1. unset($array_datos['0']);

La pregunta es ,

¿hay alguna manera de evitar que me salga esto "0: [email protected]"?

imagino que de estar haciendo algo mal, estaria en la sentencia :

Código PHP:
Ver original
  1. array_push($array_datos, ($array_datos['email'] = $email));

pero no se que es la verdad , he probado todo y nada.

help please.
  #8 (permalink)  
Antiguo 18/04/2015, 16:52
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Nada he seguido intentandolo , y nada es como si me metiera por duplicado el email.

y solo logro que funcione añadiendole esto:

Código PHP:
Ver original
  1. unset($array_datos['0']);

¿Quizas habria alguna manera mas optimizada y /o elegante para resolver esto?
  #9 (permalink)  
Antiguo 18/04/2015, 21:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Cita:
Nada he seguido intentandolo , y nada es como si me metiera por duplicado el email.
El problema es que array_push() agrega el elemento, pero es totalmente innecesario, porque lo asignas directamente:

Código PHP:
Ver original
  1. // MAL
  2. array_push($array_datos, ($array_datos['email'] = $email));
  3.  
  4. // BIEN
  5. $array_datos['email'] = $email;

Por favor aprende la diferencia entre arrays indexados y asociativos, array_push() trabaja con arrays indexados, pero tu estructura es un array asociativo.

Sencillamente estabas tratando de clavar con una zanahoria.

Lee el siguiente manual: http://php.net/manual/es/language.types.array.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 19/04/2015, 10:23
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Te comento pateketrueke:

Se la diferiencia entre array indexado y otro asociativo.

Entonces te preguntaras el por que de mi lio.

Eso es debido a que me han dicho de hacer un sistema de registro que nunca habia hecho hasta ahora y que me hace perder ya hasta el sentido de lo que esta bien y lo que esta mal.

Te explico:

Lo que tengo que hacer (y que funciona ya por fin) es:

Un sistema de registro en la que como clave unica sea el "email" y luego su "password".

Hasta aqui todo normal, pero....

es que me han pedido que el usuario se pueda registrar indistintamente o bien con su "email" o

bien con su "numero de movil" y luego su "password".

y luego loguearse.


Esto aparentemente sencillo me ha llevado mucho tiempo.


La duda-problema, que ahora tengo es:

Como puede el sistema de registro, detectar y no dejar a un usuario que se ha registrado por email, el registrarse por segunda vez con su numero de movil?

y al contrario un usuario registrado con su numero de movil que no se pueda registrar por segunda vez con su email.

Vamos que lo detecte.

¿tendria que tener algun valor unico que detectara esto? no se.

Acepto sugerencias para enfocarlo despues yo.
  #11 (permalink)  
Antiguo 19/04/2015, 10:49
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Si la persona tiene varios emails y varios numeros, es imposible saberlo
  #12 (permalink)  
Antiguo 19/04/2015, 11:00
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Ya bueno, en el caso que dices tu , efectivamente seria imposible.

Me refiero para un mismo poseedor de un email y su numero de movil.
  #13 (permalink)  
Antiguo 19/04/2015, 12:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Meter el valor de una variable en una posicion concreta de un array

No veo la relación entre la validación requerida para el caso, con el manejo programático de arrays.
La validación es un problema de lógica del sistema. Requiere definir restricciones de datos en la validación de usuarios, las que dependerán de los datos existentes previamente. No se si el pedido que te han hecho se puede cumplir, me parece poco viable.
El tema del post, sobre los arrays es un tema de codificación que nada tiene que ver con eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 19/04/2015, 12:57
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Meter el valor de una variable en una posicion concreta de un array

gnzsoloyo, si tiene que ver por que gracias a los array (entre otras cosas), he podido

hacerlo.

El problema que tenia con los arrays en este post , son el nexo que une con el sistema de registro.

Sobre la viabilidad de que se pueda registrar un usuario bien con email o numero de movil.

No es algo que lo diga yo. existen sitios que lo utilizan, supongo que ellos saben que es viable.
  #15 (permalink)  
Antiguo 19/04/2015, 13:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Meter el valor de una variable en una posicion concreta de un array

Creo que no has entendido lo que dije...

El problema de cómo poner un valor X en una posición Y de un array, es un tema estrictamente de sintaxis en la codificación, para lo cual corren las restricciones que @pateketrueke te dijo: No puedes tratar un array indexado como si fuese un array asociativo. No son la misma cosa, y todo el problema se reduce a que uses la forma sintáctica correcta.
¿Se entiende?

El tema de como validar que un mismo usuario pueda alternativamente registrarse con el e-Mail como username, o registrarse por medio del numero de móvil, es un tema de diseño de sistema, que simplemente debe permitirlo, validando que existan ambos datos asociados al mismo usuario. Eso es algo que ni siquiera define si se usarán arrays o no.
El uso de arrays en la codificación de las funciones que generen la validación es una definición del desarrollo, pero no es obligatoria. Dependerá de tu diseño como programador si los usas.
Y de todos modos, si los usas, debes respetar las reglas sintácticas, lo que no estás haciendo por lo que describes y ya te explicaron.

Ahora bien, para que un sistema permita que el identificador de username sea uno u otro, o pueda validar ambos para un mismo usuario registrado, no es que exista una alternancia: El sistema debe registrar ambos datos como propios del mismo usuario. Desde el punto de vista de BBDD, son dos campos de la columna, ambos declarados como UNIQUE, y allí termina el tema en la base de datos.
¿Se entiende?
Es decir: Si se registra con el e-Mail, entre los datos obligatorios debe estar forzosamente el numero de móvil, el cual se validará al registrar si no existe en la base otro usuario con el mismo numero de movil declarado.
¿Y si se registra con el numero de móvil?
Pues simplemente el dato de e-Mail deberá ser un dato obligatorio a solicitar al usuario, y a ser validado antes de completar el registro.

¿Y si en la registración se ingresan ambos?
Pues se validan ambos, qu eno exista ninguno en la base para ningun usuario.

¿Y si al loguearse ingresa uno de ellos, cualquiera?
Pues entonces se validará cual se ingresó, y se verificará sobre ese campo.

Pero lo que te quiero hacer notar es que el que los datos provistos por el usuario los cargues en un array, o los cargues en N variables, es una decisión de diseño, y no de método de validación.
Finalmente, si la clase, framework, o funciones que usas para enviar el array de datos del usuario enterate a validar, requiere que un determinado atributo ingrese en una determinada posición, y no sabes de entrada cual será el que ingrese, eso sólo no dice que en el script que inicialmente recibe los datos debe hacerse una lógica que analice los datos entrantes y los ordene de acuerdo a lo que el método destino tiene que recibir.
El cómo se hace esa validación previa, es algo a discutir. Y sólo alli puede tener algo que ver con los arrays...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: meter, posicion, valor, variable
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:36.