В стороне: Я полагаю, что в вашем текущем коде s.id будет перезаписан a.id, если вы выберете строки в качестве ассоциативных массивов.
Теперь перейдем к одному возможному подходу ...
Одним из аспектов того, как возвращаются результаты, является потеря таблицы, из которой пришел столбец. Если вы обнаружите, что хотите выполнить постобработку набора результатов, возможно, вы можете присвоить псевдоним каждому столбцу, переименовав его следующим образом:
$query = "SELECT
s.id AS s_id
s.name AS s_name
a.id AS a_id
a.student_id AS a_student_id
a.address AS a_address
... ";
Как только вы это сделаете, вы можете организовать данные на основе substr ($ key, 0,1) и получить «имя основного столбца с substr ($ key, 2).
Если у вас есть такие, вы можете зацикливаться внутри каждой строки, чтобы создать структуру данных, с которой вы хотите работать.