2012-05-16 105 views
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这样做呢?

+0

什么决定嵌套? – Sampson

回答

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); 
0

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

实施例:

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

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

$str2 = implode($arr1); 
//aaabbbccc 
+0

我只是想看看这个案例的一些PHP代码示例,顺便说一句,谢谢你的关键。 –

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项是什么?您可能无法按照您的希望处理这些功能。

+0

我使用count()来处理这个问题。 –

+0

这意味着你永远不会在这样的数组上执行这些操作吗?在这种情况下,这个功能应该适合你。对不起,它不使用递归。 – Okonomiyaki3000

+0

顺便说一句,感谢您的参与我的问题:) –