2012-03-24 112 views

回答

2

是的,你可以explode()两次,但第二个必须是在一个循环:

$string = 'S:1,M:1,L:1,XL:1,XXL:1,3XL:1'; 
// Split on the commas 
$sizes = explode(",", $string); 
// Output array 
$quantities = array(); 

// Loop over the first explode() result 
foreach ($sizes as $size) { 
    // Assign each pair to $s, $q 
    list($s, $q) = explode(":", $size); 
    // And put them onto an array keyed by size 
    $quantities[$s] = $q; 
} 

// This builds an array like: 
Array 
(
    [S] => 1 
    [M] => 1 
    [L] => 1 
    [XL] => 1 
    [XXL] => 1 
    [3XL] => 1 
) 
+0

尤里卡!谢谢..很好,很简单! – 2012-03-24 20:25:20

2
$string = 'S:1,M:1,L:1,XL:1,XXL:1,3XL:1'; 
$result = array(); 
foreach (explode(',',$string) as $sub){ 
    $subAry = explode(':',$sub) 
    $result[$subAry[0]] = $subAry[1]; 
} 

var_dump($result); 

拆分它,遍历拆分,然后将它们作为键值对插入结果数组中。

0

试试这个:

$str = 'S:1,M:1,L:1,XL:1,XXL:1,3XL:1'; 
$tokens = explode(',', $str); 
$sizes = array(); 

foreach ($tokens as $el) { 
    list($k, $v) = explode(':', $el); 
    $sizes[$k] = $v; 
} 

print_r($sizes); 

希望这有助于:)

+0

啊。这与其他一些答案基本相同。必须输入更快:) – 2012-03-24 20:34:26