2011-09-27 56 views
0

我的數據變量:PHP分組的數據值

1=icon_arrow.gif,2=icon_arrow.gif,3=icon_arrow.gif 

我需要它通過=後的值進行分組,所以在這種情況下,它應該是這樣的:

$out = array('icon_arrow.gif' => '1, 2, 3'); 

的「 icon_arrow.gif'字段必須是唯一的,並且不能重複。

它是如何做到的?

+0

什麼是原始字符串的來源? – 2011-09-27 22:46:13

+1

也許這只是我,但我完全不明白這個問題。 ha – Shackrock

+0

到目前爲止你有什麼? – webbiedave

回答

2

只是爲了好玩。沒有特殊的字符,這也應該工作。

$str="1=icon_arrow.gif,2=icon_arrow.gif,3=icon_arrow.gif,4=x.gif"; 

$str = str_replace(',', '&', $str); 
parse_str($str, $array); 
$result = array(); 
foreach($array as $k=>$v) 
    $result[$v] = (isset($result[$v]) ? $result[$v] . ", " : "") . $k; 
+0

我真的很喜歡這個主意,謝謝! – Lucas

3

初始化一個數組:與,

foreach(explode(',', $string) as $p) 
{ 
    list($i, $n) = explode('=',$p); 
    $array[$n][] = $i; 
} 

內爆那麼結果:

$array = array(); 

,爆炸的輸入端,存儲結果作爲數組根據它由=子爆炸:

foreach($array as &$v) 
    $v = implode(', ', $v); 
unset($v); 

完成。

+0

'$ v = implode(',',$ v);' –

+0

@yi_H:是的,對^^ – hakre

+0

好吧,geez。你爲他做了整件事。他將如何學習? ;) – webbiedave