Estas líneas de la documentación en php.net son clave:
https://www.php.net/manual/en /mysqli-result.fetch-array.php
En los casos en que dos o más columnas tengan el mismo nombre, la única forma de hacer referencia a la(s) primera(s) aparición(es) de esa columna es mediante un índice numérico. En estos casos, necesita mysqli_fetch_row o mysqli_fetch_array con MYSQLI_BOTH o MYSQLI_NUM como su segundo argumento (en uso procedimental).
mysqli_fetch_assoc($result) es solo una abreviatura de mysqli_fetch_array($result, MYSQLI_ASSOC) .
mysqli_fetch_object hace lo que esperas:devuelve una fila de resultados como un objeto. Uso de esto sobre mysqli_fetch_assoc es una cuestión de si un objeto o una matriz representa mejor el registro que se está manejando. El objeto puede ser de la clase que desee:stdClass es la predeterminada.