Tema: foraech
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/03/2009, 07:39
El_Barba
 
Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: foraech

Si sabes que todas las posiciones vas a tener un nombre sería así:

foreach ($b as $person)
{
echo $person["nombre"];
}

Pero si se puedira dar el caso de tener algo como:

$b[0]["edad"] = 25;
$b[1]["nombre"] = "Isabel";
$b[1]["edad"] = 20;

$b[0] no tiene nombre te daría un notice:

Notice: Undefined index: nombre in... Indicándote que estas accdiendo a una posición del vector que no existe.

por lo que es mejor, antes de imprimir el nombre preguntar si existe, y viendo si existe, mirar que hacer.

foreach ($b as $person)
{
if (isset($person["nombre"])) echo $person["nombre"];
}

Te explico cómo yo lo veo, la estructura que te has declarado es una matriz o lo que es lo mismo un vector de vectores. En cada foreach te estas quedando en la variable $person con una posicion del vector que es otro vector en si, con los datos de la persona.

Para comprenderlo mejor haz un var_dump($b) . La función var_dump imprime por pantalla información acerca de la variable que le pases.

El resultado sería.

array(2) { [0]=> array(2) { ["nombre"]=> string(6) "Silvia" ["edad"]=> int(25) } [1]=> array(2) { ["nombre"]=> string(6) "Isabel" ["edad"]=> int(20) } } SilviaIsabel

Como puedes ver se trata de un vector con dos posiciones (array(2)) , ya que solo tienes 2 personas. En la posicion 0 tienes un vector con dos posiciones "nombre"y "edad" ([0]=> array(2) { ["nombre"]=> string(6) "Silvia" ["edad"]=> int(25) } ) Y en la posicion 1 tienes lo mismo [1]=> array(2) { ["nombre"]=> string(6) "Isabel" ["edad"]=> int(20) }


Sería conveniente que te mirases las funciones foreach e isset del manual de php.

url1 -> es.php.net/foreach
url2 -> es.php.net/isset

Espero no haberme liado demasiado o que al menos lo hays comprendido.
Un saludo.