Вот код, который поможет вам:
$str = "29:funny,30:humor,2:lol";
$arr = array();
foreach (explode(',', $str) as $v) {
list($key, $val) = explode(':', $v);
$arr[$key] = $val;
}
print_r($arr);
/* will output:
Array
(
[29] => funny
[30] => humor
[2] => lol
)
*/
Например, вы можете заменить foreach на array_map
, но я думаю, что так вам проще.
Вот пример того, как это работает: http://codepad.org/4BpnCiEJ