Read the documentation for [man]mysql_fetch_assoc[/man] and [man]mysql_fetch_array[/man]. One returns an associtive array, the other can return an associative array, an array with numerical indices or an array which has both numerical and associative indices.
A little extra work would be needed for the "both" case. Other than that, if you select two columns with identical identifiers, you'd need a numerical array to reference them both (since one would be overwritten by the other in an associative array), but you could also instead provide aliases to differentiate between them using an associative array.
In my opinion, an associative array is always better to use since $row['name'] provides a lot more information when reading the code than $row[12].