Сделать вложенным для каждого использования Explode - PullRequest
0 голосов
/ 08 июня 2019

мне нужно получить значение массива для key2, поэтому вместо

 key2: "value2-bonusValue"      

мне нужно получить его вот так

 key2: {
        "value2",
        "bonusValue"
        }

секунду, если я удален: из одного из массивов я получаюНеопределенное смещение: 1 мне нужно иметь возможность получить массив без ключа и ключ с несколькими ключами

  $my_string = "key0:value0,key1:value1,key2:value2-bonusValue";

        $convert_to_array = explode(',', $my_string);
        foreach($convert_to_array as $_array){
              $temp = explode(":", $_array);
              $arrays[$temp[0]] = $temp[1];
        }
        return $arrays;

1 Ответ

1 голос
/ 08 июня 2019

Вам не хватает только одного сета, разбиения на подэлементы. В этом коде он разделяет значение на -, но если имеется только 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;
    }
}

Не уверен, что вы хотите сделать со значением.

...