Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] array asociativo php

Estas en el tema de array asociativo php en el foro de PHP en Foros del Web. Tengo un array asociativo ejemplo array("valor1"=>1,"valor2"=>2,"valor3"=>3); Y solo poseo la posicion de los valores del array o sea 0,1,2 Como puedo hacer o que funcion ...
  #1 (permalink)  
Antiguo 14/07/2013, 09:24
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
array asociativo php

Tengo un array asociativo ejemplo

array("valor1"=>1,"valor2"=>2,"valor3"=>3);

Y solo poseo la posicion de los valores del array o sea 0,1,2

Como puedo hacer o que funcion debo utilizar? para hacer referencia al =>1 del array solo teniendo su posicion? no se si me hice entender o sea

tengo la posicion numero 2
entonces me devuelva el => que seria 3
  #2 (permalink)  
Antiguo 14/07/2013, 09:37
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: array asociativo php

Podria usar array_search()

Código PHP:
Ver original
  1. <?php
  2. $array = array("valor1"=>1,"valor2"=>2,"valor3"=>3);
  3.  
  4. $clave = array_search(2, $array); // $clave = "valor2";
__________________
Salu2!
  #3 (permalink)  
Antiguo 14/07/2013, 09:45
Avatar de Karmac  
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
Respuesta: array asociativo php

Código PHP:
<?php
$arr 
= array(
    
'value1'    =>    1,
    
'value2'    =>    2,
    
'value3'    =>    3
);

// Añadimos un elemento antes del array() ya que
// empiezas por el número 1, y al obtener solo el
// identificador más tarde se quedaría $keys[0] = value1.
// De esta forma $keys[0] = null y $keys[1] = value1.
// Este paso es opcional, depende de por donde empiece tu array().
array_unshift$arr'' );
// Creamos un array con los identificadores. En tu caso
// es como darle la vuelta al array().
$keys array_keys$arr );

echo 
$keys[1]; // value1
echo $keys[2]; // value2
echo $keys[3]; // value3
?>
Saludos.

EDICIÓN: se me ha adelantado @Italico76 jeje Su opción también te puede servir, pero no obtendrás el array() "revertido".
  #4 (permalink)  
Antiguo 14/07/2013, 09:57
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: array asociativo php

JEJE ... y lo del array() "revertido" es tambien una opcion ciertamente... aunque claro, es mas procesamiento
__________________
Salu2!
  #5 (permalink)  
Antiguo 14/07/2013, 09:57
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
Respuesta: array asociativo php

Muchas gracias a los dos por responder! pero es que no necesito el valor del array o sea necesito es obtener el valor asociativo mediante la posicion

en mi ejemplo
array("valor1"=>1,"valor2"=>2,"valor3"=>3);

la posicion 0 pertenece a valor1=>1

yo quisiera saber como mediante esa posicion obtengo lo que esta despues del => o sea 1
  #6 (permalink)  
Antiguo 14/07/2013, 09:59
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: array asociativo php

Esto te devolvería la clave correspondiente al valor que elegiste:

Código PHP:
Ver original
  1. $array = array("valor1"=> 1 ,"valor2"=> 2 ,"valor3"=> 3);
  2.  
  3. foreach($array as $clave => $valor)
  4.     if ($valor == 1)
  5.         echo $clave;
¿Eso es lo que necesitas?
  #7 (permalink)  
Antiguo 14/07/2013, 10:06
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: array asociativo php

Me confundí. Segundo intento:

Código PHP:
Ver original
  1. $array = array("valor1" => 1 ,"valor2" => 2 ,"valor3" => 3);
  2.  
  3. foreach($array as $clave => $valor) {
  4.     $i++
  5.     if ($i == 1) // 1 es la posición del puntero
  6.         echo $clave;
  7. }
  #8 (permalink)  
Antiguo 14/07/2013, 10:08
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
Respuesta: array asociativo php

Si eso es lo que necesito! pero no debo hacerlo con foreach porque seria algo nada optimo! para lo que estoy haciendo! porque el array tiene demasiados valores y se procesa como unas 20 veces, entonces hacer mas de 20 validaciones tambien hara mi codigo mas largo! y no quiero eso! ya que me gustan programar de manera optima!
  #9 (permalink)  
Antiguo 14/07/2013, 10:38
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: array asociativo php

Si lo que quieres es la posicion 2:
Código PHP:
Ver original
  1. $t=array("valor1"=>1,"valor2"=>2,"valor3"=>3);
  2. $k=array_keys($t);
  3.  
  4. echo $t[$k[2]];
  #10 (permalink)  
Antiguo 14/07/2013, 10:40
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: array asociativo php

Cita:
Iniciado por edward1994 Ver Mensaje
Si eso es lo que necesito! pero no debo hacerlo con foreach porque seria algo nada optimo! para lo que estoy haciendo! porque el array tiene demasiados valores y se procesa como unas 20 veces, entonces hacer mas de 20 validaciones tambien hara mi codigo mas largo! y no quiero eso! ya que me gustan programar de manera optima!
Jejeje. Bueno, según mi entendimiento no-óptimo, esto cumple la tarea:

Código PHP:
Ver original
  1. <?php
  2. $array = array("valor1" => 1 , "valor2" => 2 , "valor3" => 3 , "valor4" => 'cuatro' , "valor5" => 'cosa' , "valor6" => 6);
  3. $posiciones = array('1' , '4' , '2' , '5'); // ... Y 200 más
  4. $i = null;
  5. $resultado = array();
  6.  
  7. foreach($array as $clave => $valor) {
  8.     $i++;
  9.    
  10.     foreach($posiciones as $p)
  11.         if ($i == $p) // $p es la posición
  12.             $resultado[$clave] = $valor;
  13. }
  14.  
  15. echo '<pre>'. print_r($resultado , true) .'</pre>';
  16.  
  17. ?>
  #11 (permalink)  
Antiguo 14/07/2013, 10:50
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
Respuesta: array asociativo php

Bueno, si tienes razon! termine haciendolo con dos ciclos! uno dentro de otro! pero pienso que deberiamos desarrollar una funcion en php que sirva para sus proximas versiones! donde pasandole la posicion del valor me devuelva el =>
  #12 (permalink)  
Antiguo 14/07/2013, 10:54
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: array asociativo php

Cita:
Iniciado por edward1994 Ver Mensaje
Bueno, si tienes razon! termine haciendolo con dos ciclos! uno dentro de otro! pero pienso que deberiamos desarrollar una funcion en php que sirva para sus proximas versiones! donde pasandole la posicion del valor me devuelva el =>
Uh..array_keys lleva ahí más de 10 años...Acceder por indice a un array asociativo no tiene sentido.Se accede por keys.Y el acceso por indice a la key se obtiene con array_keys...Los bucles,etc...bueno..
  #13 (permalink)  
Antiguo 14/07/2013, 11:06
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
Respuesta: array asociativo php

Compañero Dashtrash gracias por su respuesta! y por lo del array_keys y respecto a su comentario de "no tiene sentido" :D recuerde que la basura de unos es un tesoro para otros! asi como para usted puede no tener sentido! para otros si puede tenerlo! debemos recordar que en la programación existen diversas cantidad de posibilidades todo depende del programador y siempre debemos encontrar la via mas optima! ya que el mejor programador para mi, no es aquel que sepa mas del lenguaje! si no aquel que resuelva un problema de la manera mas optima!
  #14 (permalink)  
Antiguo 14/07/2013, 11:10
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: array asociativo php

Cita:
Iniciado por dashtrash Ver Mensaje
Uh..array_keys lleva ahí más de 10 años...Acceder por indice a un array asociativo no tiene sentido.Se accede por keys.Y el acceso por indice a la key se obtiene con array_keys...Los bucles,etc...bueno..
dashtrash, tengo curiosidad ¿Cómo se resolvería el problema de la forma que mencionas?.
  #15 (permalink)  
Antiguo 14/07/2013, 11:14
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: array asociativo php

Discurso que no tiene sentido, mezclando la "via más óptima" (??) para los programadores, con lo que es un tipo de dato.
Te aseguro que la "vía más óptima" para los programadores es entender las diferencias entre los tipos de datos.
Ah, claro, y conocer el lenguaje que están usando....
Accedes a un array indexado usando keys?
Accedes a un objeto usando indices?
El mismo sentido tiene acceder a un array asociativo usando índices.
  #16 (permalink)  
Antiguo 14/07/2013, 12:20
Avatar de Karmac  
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
Respuesta: array asociativo php

Me parece que el sentido del asunto es que el array sea array(1 => 'valor1', 2 => 'valor2') y no array('valor1' => 1, 'valor2' => 2). Creo que fue diseñado para ser así, aunque lo otro también sirva.

De todos modos siempre queda array_keys()…
  #17 (permalink)  
Antiguo 14/07/2013, 19:04
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: array asociativo php

Cita:
Iniciado por metacortex Ver Mensaje
dashtrash, tengo curiosidad ¿Cómo se resolvería el problema de la forma que mencionas?.
Me respondo a mí mismo:

Código PHP:
Ver original
  1. $array = array("valor1" => 1 , "valor2" => 2 , "valor3" => 3 , "valor4" => 'cuatro' , "valor5" => 'cosa' , "valor6" => 6);
  2. $posiciones = array('1' , '4' , '2' , '5'); // ... Y 200 más
  3. $resultado = array();
  4.  
  5. $k = array_keys($array);
  6.  
  7. foreach($posiciones as $clave => $valor)
  8.     $resultado[] = $array[$k[$valor]];
  9.  
  10. echo '<pre>'. print_r($resultado , true) .'</pre>';
Aunque la verdadera curiosidad es que se pudiera hacer sin bucles.

Etiquetas: asociativo
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 19:40.