2011-10-27 102 views
1

我有以下陣列在PHP結合數組字符串在PHP

$arrOrders['remains'] = 'ASC'; 
$arrOrders['rate'] = 'DESC'; 

如何使用合併爲一個字符串像剛剛與本地函數?

$str = 'remain ASC, rate DESC'; 
+1

有沒有考慮過使用'foreach'來處理數組? –

回答

5
$a = array(
    'remains' => 'ASC', 
    'rate'  => 'DSC' 
); 

echo implode(', ', array_map(function($v1, $v2) { 
    return sprintf('%s %s', $v1, $v2); 
}, array_keys($a), array_values($a))); 
// remains ASC, rate DSC 
+0

您是否總是使用您熟悉的所有PHP函數進行每個簡單的操作? –

+0

+1使用函數,任何人都知道這個瓶坯vs簡單的foreach HL。貼? – Blem

+0

不是真的 - 但我必須承認我喜歡數組上的函數式方法。這是一個味道的問題... –

1

您正在尋找implode,但劑量不包括鍵,但頁面上的第一個註釋是包括按鍵

/** 
* Implode an array with the key and value pair giving 
* a glue, a separator between pairs and the array 
* to implode. 
* @param string $glue The glue between key and value 
* @param string $separator Separator between pairs 
* @param array $array The array to implode 
* @return string The imploded array 
*/ 
function array_implode($glue, $separator, $array) { 
    if (! is_array($array)) return $array; 
    $string = array(); 
    foreach ($array as $key => $val) { 
     if (is_array($val)) 
      $val = implode(',', $val); 
     $string[] = "{$key}{$glue}{$val}"; 

    } 
    return implode($separator, $string); 

} 


$arrOrders = array(
    'remains' => 'ASC', 
    'rate'  => 'DSC' 
); 
$str = array_implode(' ', ', ', $arrOrders); 
+0

它不起作用。 – vietean

+0

你得到一個錯誤或什麼?你確定你使用它是正確的,它對我來說工作得很好 – Blem

+2

@vietean曾經考慮過從代碼學習**的可能性,而不僅僅是複製粘貼它? –

2

功能你可以這樣做:

$string = ''; 
foreach($arrOrders as $key => $value) 
    $string = $string . "$key $value, "; 
$string = rtrim($string, ', '); // cut the last comma at the end of the string 

echo $string // remains ASC, rate DESC 
+0

會逗號實際切? –

+0

不要太爲選票而着急。這不值得。 –

+0

哈哈,有什麼區別:) –

3

使用foreach和implode()

foreach ($arrOrders as $key => $val) { 
$temp[] = "$key $val"; 
} 
$order = implode(',', $temp); 
+0

+1:我喜歡這個。 – vietean

+0

@vietean謝謝你=) – Godzilla