Si es asociativo... seria mejor opcion asi:
Código PHP:
<?php
$arr = array ('nombre'=>'juan','apellido'=>'perez');
$it = new arrayIterator($arr);
foreach ($it as $key=>$val){
echo "$key : $val<br/>";
}
Pero puedes hacerlo perfecamente con FOR
Código PHP:
<?php
$arr = array ('nombre'=>'juan','apellido'=>'perez');
$largo_array = count($arr);
for($i=0;$i<$largo_array;$i++){
echo key($arr).': '.current($arr).'<br/>';
next($arr);
}
Logicamente no puedes referencias un elemento con un indice numerico ($i en el ejemplo tuyo) si es asociativo,...ahi la falla Por eso fijate uso current() next() ... key() si quiero el indice
VOLVIENDO a tu CASO PARTICULAR, creo tu tienes un array de arrays y no un array bi-dimensional como dices: $persona[0]['nombre']
En tal caso... el primer "bucle" seria con indice numerico y el interno es asociativo:
Código PHP:
<?php
// Simulamos un mysql_fech_array() en $datos
$datos = array();
$datos[] = array ('id'=>1,'nombre'=>'juan','apellido'=>'perez','telefono'=>'30045634455');
$datos[] = array ('id'=>2,'nombre'=>'pepe','apellido'=>'gonzalez','telefono'=>null);
$cant_catos = count($datos);
for($row_ix=0;$row_ix<$cant_catos;$row_ix++){
$row = $datos[$row_ix];
foreach ($row as $field=>$val){
echo "$field : $val <br/>";
}
}
Salida: Cita: id : 1
nombre : juan
apellido : perez
telefono : 30045634455
id : 2
nombre : pepe
apellido : gonzalez
telefono :