Вам не хватает только одного сета, разбиения на подэлементы. В этом коде он разделяет значение на -
, но если имеется только 1 элемент, он устанавливает его обратно в качестве первого элемента, в противном случае он добавляет подмассив в ...
$convert_to_array = explode(',', $my_string);
foreach($convert_to_array as $_array){
$temp = explode(":", $_array);
$sub = explode("-", $temp[1]);
if ( count($sub) == 1 ) {
$sub = $sub[0];
}
$arrays[$temp[0]] = $sub;
}
print_r( $arrays );
что дает ...
Array
(
[key0] => value0
[key1] => value1
[key2] => Array
(
[0] => value2
[1] => bonusValue
)
)
В случае отсутствия :
вы можете проверить количество элементов в $temp
...
$convert_to_array = explode(',', $my_string);
foreach($convert_to_array as $_array){
$temp = explode(":", $_array);
if ( count($temp) == 2 ) {
$sub = explode("-", $temp[1]);
if ( count($sub) == 1 ) {
$sub = $sub[0];
}
$arrays[$temp[0]] = $sub;
}
}
Не уверен, что вы хотите сделать со значением.