PHP:将字符串转换为数组

时间:2018-05-03 09:30:41

标签: php

我有一个输入字符串,其值如下:

"[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]"

我想把它转换成一个看起来像这样的php数组:

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

有人可以帮助我!

4 个答案:

答案 0 :(得分:2)

<?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];

}

这会将您需要的值存储到变量中。我建议将它们存储在数组而不是变量中,这样你就可以在foreach循环之外处理它们,但这取决于你。

答案 1 :(得分:1)

您的简单解析器

$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++;
}

答案 2 :(得分:0)

你不能将数组设置为变量。如果你想将字符串转换为数组,我想我的代码示例可以帮助你:

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

答案 3 :(得分:0)

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