我从url值中得到了类似以下内容:
$param = "{year:2019,month:5,id:3}"
我无法将其转换为数组。
有人可以帮我吗
答案 0 :(得分:2)
我认为需要手动解析。
首先在没有{}
的情况下用逗号爆炸以分隔每个键值对,然后循环并再次爆炸以将键与值分开。
$param = explode(",", substr($param, 1, -1));
foreach($param as $v){
$temp = explode(":", $v);
$res[$temp[0]] = $temp[1];
}
var_dump($res);
/*
array(3) {
["year"]=>
string(4) "2019"
["month"]=>
string(1) "5"
["id"]=>
string(1) "3"
}*/
答案 1 :(得分:2)
每当您拥有这样的字符串时,由于包含不期望的值(例如逗号或冒号),值可能会引起问题。因此,为了增加混乱,并且因为这只是一个有趣的实验,我想到了将字符串转换为URL编码的字符串(使用&和=)然后将其解析为参数字符串的想法。
parse_str(strtr($param, ["{" => "", "}" => "", ":" => "=", "," => "&"]), $params);
将$params
数组指定为...
Array
(
[year] => 2019
[month] => 5
[id] => 3
)
答案 2 :(得分:0)
您的json格式不正确。试试这个:
$param = '{"year":2019,"month":5,"id":3}';
var_dump(json_decode($param, true));