正则表达式是可能是最方便的解决方案在这里(你也不必担心空白等):
$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