PHP:将字符串转换为数组

I have an input string that has the following value:

"[2018-05-08][1][17],[2018-05-08][2][31],[2018-05-08][3][40],[2018-05-08][4][36],[2018-05-09][1][21]"

I want to convert this into a php array that looks something like this:

$date=2018-05-08;
$meal=1;
$option=17;

can someone help me please !

Simple parser for You

$arr1 = explode (",","[2018-05-08][1][17],[2018-05-08][2][31],[2018-05-08][3][40],[2018-05-08][4][36],[2018-05-09][1][21]"); // making array with elements like : [0] => "[2018-05-08][1][17]"
$arr2;
$i = 0;
foreach($arr1 as $item){
    $temp = explode ("][",$item); // array with elements like [0] => "[2018-05-08", [1] => "1", [2] => "21]"
    $arr2[$i]['date'] = substr( $temp[0], 1 ); // deleting first char( '[' )
    $arr2[$i]['meal'] = $temp[1];
    $arr2[$i]['option'] = substr($temp[2], 0, -1); // deleting last char( ']' )
    $i++;
}

you cannot set array to variable .If you want convert string to array, i think my code example may help you:

$a= "[2018-05-08][1][17],[2018-05-08][2][31],[2018-05-08][3][40],[2018-05-08][4][36],[2018-05-09][1][21]";
$b=  explode(",",$a );
foreach ($b as $key =>$value) {
    $b[$key] = str_replace("[", " ", $b[$key]);
    $b[$key] = str_replace("]", " ", $b[$key]);
    $b[$key] =explode(" ",trim($b[$key]) );
}
print_r($b);
<?php
$data="[2018-05-08][1][17],[2018-05-08][2][31],[2018-05-08][3][40],[2018-05-08][4][36],[2018-05-09][1][21]";

$data=explode(',',$data);

foreach($data as $row){
    preg_match_all('#\[(.*?)\]#', $row, $match);

    $date=$match[1][0];
    $meal=$match[1][1];
    $option=$match[1][2];

}

This will store the values you need into the variables. I would suggest to store them in arrays and not variables so you can handle them outside of the foreach loop but that's up to you.

$results = array_map(
    function ($res) {
       $res = rtrim($res, ']');
       $res = ltrim($res, '[');
       return explode('][', $res);
    },
    explode(',', $yourString)
);
//get variables for first element of array
list($date, $meal, $option) = $results[0];