У меня есть строка
$string = 'S:1,M:1,L:1,XL:1,XXL:1,3XL:1';
Я хочу создать массив, где
$array['S'] = 1; $array['M'] = 1;
Я думал, что смогу взорваться (',', $ string); и затем взорваться (':', $ string); снова ;-) но это совсем не работает.
Да, вы можете explode() дважды, но второй должен быть в цикле:
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 )
$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);
Разделить его, выполнить итерацию по разделениям, а затем вставить их в результирующий массив в виде пары ключ-значение.
Попробуйте:
$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);
Надеюсь, это поможет:)