No. mysql_fetch_array
simplemente devuelve la siguiente fila del resultado y avanza el puntero interno. No hace bucle. (Internamente, puede o no usar algún bucle en alguna parte, pero eso es irrelevante).
while ($row = mysql_fetch_array($result)) {
...
}
Esto hace lo siguiente:
mysql_fetch_array
recupera y devuelve la siguiente fila- la fila está asignada a
$row
- la expresión se evalúa y si se evalúa como
true
, se ejecuta el contenido del bucle - el procedimiento comienza de nuevo
Esto hace lo siguiente:
mysql_fetch_array
recupera y devuelve la siguiente fila- la fila está asignada a
$row
foreach
recorre el contenido de la matriz y ejecuta el contenido del ciclo tantas veces como elementos haya en la matriz
En ambos casos mysql_fetch_array
hace exactamente lo mismo. Solo tienes tantos bucles como escribes. Sin embargo, ambas construcciones no hacen lo mismo. El segundo solo actuará en una fila del resultado, mientras que el primero recorrerá todas las filas.