2012-05-16 104 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

順便說一句,感謝您的參與我的問題:) –