Isn't that what you already have in [font=monospace]$row[/font] for each record? Make an array of all rows (quickest done by using fetchAll instead of fetch).
Or do you want the transpose of that, where [font=monospace]$something['etymology'][/font] contains an array of the etymology values (instead of [font=monospace]$etymology[/font]?
// Assuming $fields and $allrows have been constructed as in the code and the previous paragraph respectively
$allcolumns = [];
foreach($fields as $field)
{
$allcolumns[$field] = array_column($allrows, $field);
}
or
$allcolumns = array_combine($fields, array_map(null, ...$allrows));
// but I don't off-hand see anything that guarantees that the
// correct columns will end up in the correct position.