Multi Dem php строка в массив - разделенный запятыми, разделенный двоеточиями массив - PullRequest
1 голос
/ 25 марта 2012

У меня есть строка

$string = 'S:1,M:1,L:1,XL:1,XXL:1,3XL:1';

Я хочу создать массив, где

$array['S'] = 1;
$array['M'] = 1;

Я думал, что смогу взорваться (',', $ string); и затем взорваться (':', $ string); снова ;-) но это совсем не работает.

Ответы [ 3 ]

2 голосов
/ 25 марта 2012

Да, вы можете 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
)
2 голосов
/ 25 марта 2012
$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 голосов
/ 25 марта 2012

Попробуйте:

$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);

Надеюсь, это поможет:)

...