When PHP returns an associative array it also returns the values in column position. I know this doesn't help when you are using * since you will have no idea what position the columns are comming in as. So what you should do is define your query to only return the columns that you want and if you have naming conflicts take care of them in the sql:
home_address:
--------------------
home_address_id int not null
user_id int not null
address1 varchar(25)
address2 varchar(25)
city varchar(25)
state char(2)
zip varchar(10)
bus_address:
--------------------
bus_address_id int not null
user_id int not null
address1 varchar(25)
address2 varchar(25)
city varchar(25)
state char(2)
zip varchar(10)
Here I have 2 tables with the same data structure that hold address information for a user (I'd never build my database this way but it works for an example).
Now to get all the address information into PHP so I can read it I need to handle the naming conflicts in my SQL by either assiging aliases to the fields or forcing the positioning
SELECT h.address1 as home_addr1, h.address2 as home_addr2,
h.city as home_city, h.state as home_state, h.zip as home_zip,
b.address1 as bus_addr1, b.address2 as bus_addr2,
b.city as bus_city, b.state as bus_state, b.zip as bus_zip
FROM home_address h, bus_address b
WHERE h.user_id = $user_id
AND b.user_id = $user_id;
Here I've listed all of the columns that I want and I've given them aliases so I can refrence them in the associative array by name. But I've also got them specific positions so I don't have to use the aliases I can just call them by position if I didn't want to type in all the as xxxx lines.