如何从php中的单个json值创建数组

时间:2012-03-30 14:04:40

标签: php json

我有这个json字符串:

$row['medium'] = "{\"medium\":13|17|1|14, \"medium_sub\":21}";

现在我想从“中等”部分制作一个数组:

$medium_arr = $row['medium']->{'medium'};   

$medium_arr =
explode("|", $medium_arr);

print_r($medium_arr); //This is empty

当我创建一个零的数组(但我知道,这没有任何意义)

$row['medium'] = "{\"medium\":1301701014, \"medium_sub\":21}";
$medium_arr = explode("0", $medium_arr);

print_r($medium_arr); //This gives 4 results

我怎么可能不能以正确的方式使用爆炸?

2 个答案:

答案 0 :(得分:4)

如果这是您真正的JSON字符串,则无效。必须引用以管道分隔的字符串。使用零是有效的,因为它导致medium的数字值不需要引号。

$row['medium'] = "{\"medium\":\"13|17|1|14\", \"medium_sub\":21}";

然后可以使用json_decode()正确解码。

var_dump(json_decode($row['medium']));
object(stdClass)#1 (2) {
  ["medium"]=>
  string(10) "13|17|1|14"
  ["medium_sub"]=>
  int(21)
}

$json = json_decode($row['medium']);
$medium_arr = $json->medium;
$medium_arr = explode("|", $medium_arr);
var_dump($medium_arr);

array(4) {
  [0]=>
  string(2) "13"
  [1]=>
  string(2) "17"
  [2]=>
  string(1) "1"
  [3]=>
  string(2) "14"
}

更新

我想补充一点,不是使用分隔字符串,如果你有能力修改JSON,你应该在JSON中使用数组作为这些值:

$row['medium'] = "{\"medium\":[13,17,1,14], \"medium_sub\":21}";
var_dump(json_decode($row['medium]));

// Now they're already an array!
object(stdClass)#1 (2) {
  ["medium"]=>
  array(4) {
    [0]=>
    int(13)
    [1]=>
    int(17)
    [2]=>
    int(1)
    [3]=>
    int(14)
  }
  ["medium_sub"]=>
  int(21)
}

答案 1 :(得分:0)

试试这个。

    $row['medium'] = "{\"medium\":13|17|1|14, \"medium_sub\":21}";

    $medium_arr = $row['medium'];

    $medium_arr = json_decode($medium_arr);

    print_r($medium_arr);