正則表達式是可能是最方便的解決方案在這裏(你也不必擔心空白等):
$str = 'sub_category-21,cross_category-23,sub_category-33,'.
'sub_category-93,cross_category-69';
preg_match_all('/(sub|cross)_category-([0-9]+)/', $str, $matches,PREG_SET_ORDER);
$categories = array('sub' => array(), 'cross' => array());
foreach($matches as $match) {
$categories[$match[1]][] = $match[2];
}
print_r($categories);
See it in action。
爲了方便起見,此代碼將結果放在$categories['sub']
和$categories['cross']
中,而不是放在兩個單獨的變量中。如果您希望以不同的方式完成更改,很容易。
您還可以嵌套explode
做到這一點:
$str = 'sub_category-21,cross_category-23,sub_category-33,'.
'sub_category-93,cross_category-69';
$categories = array();
foreach(explode(',', $str) as $category) {
list($type, $id) = explode('-', trim($category));
$categories[$type][] = $id;
}
print_r($categories);
See it in action。
來源
2011-09-08 09:26:25
Jon