如何从json字符串中获取值?

时间:2015-11-19 05:27:43

标签: php json

我在这个变量中有一个JSON字符串:

$value = $request->pre_departure_type;

使用值:

"30":0 ,"31":2

我想从上面的JSON字符串中获取值30和0,31和2.

我试过这段代码:

$result = array();

foreach (explode(',', $value) as $sub) {
    $subAry = explode(':', $sub);
    $result[$subAry[0]] = $subAry[1];
}

但这并没有在双引号上爆炸字符串。

5 个答案:

答案 0 :(得分:1)

如果你从你的代码中得到了完美的答案,那么我认为因为双重逗号而存在问题。首先将其删除。

$str = str_replace('"', '', $value);

您将获得如下所示的价值

value = 30:0 ,31:2

之后你将它转换为数组。

答案 1 :(得分:0)

首先替换双引号,然后执行与您相同的过程。

$result = array();
$newvalue = str_replace('"', '', $value);
foreach (explode(',', $value) as $sub) {
    $subAry = explode(':', $sub);
    $result[$subAry[0]] = $subAry[1];
}

答案 2 :(得分:0)

如果您获得了所需的结果但是只能使用引号,那么只需使用此功能删除引号:

$str = str_replace('"', '', $string_to_replace);

答案 3 :(得分:0)

你的值以json格式出现,所以首先你需要将它转换为object然后是数组并按照下面的方式进行操作

$valueArr=(array)json_decode($value);
$finalArray=array();
foreach($valueArr as $k=>$v){
    array_push($finalArray,$k);
    array_push($finalArray,$v);
}
echo "<pre>";print_r($finalArray);

答案 4 :(得分:0)

$value = '{"30":0 ,"31":2}'; // this is a json

$data = json_decode($value); // json to object

foreach($data as $key=>$value)
{
echo $key;  // get key
echo $value; //get value
}

从上面获取值30和0,31和2