Foros del Web » Programando para Internet » PHP »

foraech

Estas en el tema de foraech en el foro de PHP en Foros del Web. tengo una consulta como podria imprimir solo el nombre de este buche osea q solo me muestre los nombre $b[0]["nombre"] = "Silvia"; $b[0]["edad"] = 25; ...
  #1 (permalink)  
Antiguo 17/03/2009, 03:57
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
De acuerdo foraech

tengo una consulta como podria imprimir solo el nombre de este buche osea q solo me muestre los nombre

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

/* sentencia de control de flujo*/
/* cuando llega al foreach examina el array y le pasa el primer parametro*/
/* persona es una variable definida para asignar el primer $b->person */
foreach ($b as $person)
{
/*array_key devuelve las clave de una matriz*/
foreach (array_keys($person) as $field)
{
echo "$field: $person[$field]<br>";

}
}
pienso q con una condicion pero no abra otra forma.
gracias de ante mano
  #2 (permalink)  
Antiguo 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.
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 21:17.