我有这个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
我怎么可能不能以正确的方式使用爆炸?
答案 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);