<?php

function wrapWithUnion(array $params)
{
    if (is_null($params[0])) {
        return "'{$params[1]}'";
    }

    return "ST_Union({$params[0]},'{$params[1]}')";
}

$arr = array("eee","fff","ggg","hhh");

$result = null;

foreach ($arr as $val) {
    $result = wrapWithUnion(array($result, $val));
}

var_dump($result);