0

我现在有

Array(1 => Array("aaa","bbb","ccc"))
Array(2 => Array("eee","fff","ggg","hhh"))

我想做一个字符串

$a = "ST_Union(ST_Union('aaa','bbb'),'ccc')" 
$b = "ST_Union(ST_Union(ST_Union('eee','fff'),'ggg'),'hhh')"

我怎么能在 PHP 中做到这一点?

4

3 回答 3

2

UPD:稍微更新了解决方案,现在更加简单易读:

http://ideone.com/tdIXT

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);
于 2012-05-16T03:11:37.373 回答
0

在 PHP 中,您可以使用implode()函数,它将数组的元素连接成一个字符串,由您选择的“胶水”分隔。

例子:

$arr1 = Array("aaa","bbb","ccc");

$str1 = implode(",",$arr1);
//aaa,bbb,ccc

$str2 = implode($arr1);
//aaabbbccc
于 2012-05-16T03:07:51.343 回答
0

试试这个。

function wrapWithUnion($input)
{
    $template = 'ST_Union(%1$s, %2$s)';
    $output = "'" . array_shift($input) . "'";
    while ($item = array_shift($input))
    {
        $output = sprintf($template, $output, "'" . $item . "'");
    }

    return $output;
}

但是,如果输入数组中的项目少于 2 个,你想做什么?此功能可能无法像您希望的那样处理这些情况。

于 2012-05-16T03:26:33.637 回答