17/03/2009, 07:39
|
| | Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 16 años 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. |