После того, как вы исправили свой вызов на $list->fetch()
, изменив его на $list_result->fetch()
, вы можете использовать $list_result->getColumnMeta($i)
для получения метаинформации (включая имя таблицы) столбца в позиции $i
, где $i
- это столбец с 0 индексами в наборе результатов.
Затем вы можете l oop просмотреть столбцы, получить имена их таблиц и заполнить новый массив обновленными ключами и значениями из исходного массива:
while($element = $list->fetch()) {
$a = []; // New array
$i = 0;
foreach ( $element as $k => $v ) { // For each element in the fetched row
$meta = $list_result->getColumnMeta($i); // Get the meta info for column $i
$a[ $meta->table . '.' . $k ] = $v; // E.g. $a[ 'table_a.id' ] = 'Foo'
$i++; // Point to next column
}
$element = $a; // If you really need this variable name
}
Теперь вы можете использовать $element[ 'table_a.id' ]
.
Возможно, вы захотите сделать мой пример более эффективным, зацикливая мета-информацию только один раз, поскольку имена таблиц для каждого столбца не будет меняться от строки к строке.
См. https://www.php.net/manual/en/pdostatement.getcolumnmeta.php для получения дополнительной информации.