Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Peleando con un array

Estas en el tema de Peleando con un array en el foro de PHP en Foros del Web. Hola a todos, tengo lo siguiente en una variable $coches: print_r($coches) = Código PHP: Array (     [ Toyota ] => Array         (             [ Modelo ] =>  Corolla              ...
  #1 (permalink)  
Antiguo 11/01/2018, 13:36
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 12 años, 1 mes
Puntos: 2
Peleando con un array

Hola a todos, tengo lo siguiente en una variable $coches:

print_r($coches) =
Código PHP:
Array
(
    [
Toyota] => Array
        (
            [
Modelo] => Corolla
            
[Precio] => 15.400
            
[Color] => Azul
        
)

Pues por más foreach, for, pasar a json y todo lo que se me ha ocurrido, no soy capaz de extraer "Toyota", de ninguna de las maneras, será que estoy espeso pero no doy con la tecla...
  #2 (permalink)  
Antiguo 11/01/2018, 15:18
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 887
Antigüedad: 5 años, 8 meses
Puntos: 103
Respuesta: Peleando con un array

Deberia bastar con $coches["Toyota"]
  #3 (permalink)  
Antiguo 11/01/2018, 15:47
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.373
Antigüedad: 6 años, 7 meses
Puntos: 911
Respuesta: Peleando con un array

Si lo que buscas es obtener el nombre del índice y dicho arreglo tiene varios índices, puedes usar la estructura foreach de la siguiente manera:

Código PHP:
Ver original
  1. foreach ($coches as $marca => $detalles){
  2.     echo strtoupper($marca) . '<br />';
  3.    
  4.     foreach ($detalles as $clave => $valor){
  5.         echo $clave . ': ' . $valor . '<br />';
  6.     }
  7. }

En la primera iteración, obtendrías algo como esto:

Código HTML:
Ver original
  1. TOYOTA
  2. Modelo: Corolla
  3. Precio: 15.400
  4. Color: Azul

DEMO

__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #4 (permalink)  
Antiguo 11/01/2018, 16:08
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Peleando con un array

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
Deberia bastar con $coches["Toyota"]
Sí pero no es lo que busco, lo que realmente quiero es hacer un echo $xxxxx y que imprima en pantalla "Toyota", dado que yo desconozco los índices que pueden llegar en el arra. Respecto a esto:


Cita:
Iniciado por Alexis88 Ver Mensaje
Si lo que buscas es obtener el nombre del índice y dicho arreglo tiene varios índices, puedes usar la estructura foreach de la siguiente manera:

Código PHP:
Ver original
  1. foreach ($coches as $marca => $detalles){
  2.     echo strtoupper($marca) . '<br />';
  3.    
  4.     foreach ($detalles as $clave => $valor){
  5.         echo $clave . ': ' . $valor . '<br />';
  6.     }
  7. }

En la primera iteración, obtendrías algo como esto:

Código HTML:
Ver original
  1. TOYOTA
  2. Modelo: Corolla
  3. Precio: 15.400
  4. Color: Azul

Es la solución ganadora. Y el caso es que yo ya había intentado esta opción, peeeeeeeeeero, esto de pelearme con las clases php es lo que tiene, en vez de "foreach $coches as $marca => $datos", yo usé $marca->$datos, como si $datos fuera parte de una clase $marca.... en fin, una raya lo puede cambiar todo, literalmente XD

Gracias a los dos por echarme un cable :)
  #5 (permalink)  
Antiguo 11/01/2018, 18:42
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 887
Antigüedad: 5 años, 8 meses
Puntos: 103
Respuesta: Peleando con un array

Genial que pudiste resolver, perdón por mi respuesta pero es lo que entendí que querias



La zona horaria es GMT -6. Ahora son las 17:42.