I’m assuming mysql_fetch_array() perfroms a loop, so I’m interested in if using a while() in conjunction with it, if it saves a nested loop.
No. mysql_fetch_array
just returns the next row of the result and advances the internal pointer. It doesn’t loop. (Internally it may or may not use some loop somewhere, but that’s irrelevant.)
while ($row = mysql_fetch_array($result)) {
...
}
This does the following:
mysql_fetch_array
retrieves and returns the next row- the row is assigned to
$row
- the expression is evaluated and if it evaluates to
true
, the contents of the loop are executed - the procedure begins anew
$row = mysql_fetch_array($result); foreach($row as $r) { ... }
This does the following:
mysql_fetch_array
retrieves and returns the next row- the row is assigned to
$row
foreach
loops over the contents of the array and executes the contents of the loop as many times as there are items in the array
In both cases mysql_fetch_array
does exactly the same thing. You have only as many loops as you write. Both constructs do not do the same thing though. The second will only act on one row of the result, while the first will loop over all rows.