Answers:
根据文档,您需要指定是否要使用关联数组而不是中的对象json_decode
,这是代码:
json_decode($jsondata, true);
这是一个迟到的贡献,但对于投出有效的情况下json_decode
用(array)
。
考虑以下:
$jsondata = '';
$arr = json_decode($jsondata, true);
foreach ($arr as $k=>$v){
echo $v; // etc.
}
如果$jsondata
以空字符串形式返回(按照我的经验,通常json_decode
会返回),则将返回NULL
,从而导致错误警告:第3行为foreach()提供了无效的参数。您可以添加一行if / then代码或三元运算符,但是IMO只需将第2行更改为...
$arr = (array) json_decode($jsondata,true);
...除非您一次要json_decode
处理数百万个大型阵列,否则@ TCB13指出,在这种情况下,性能可能会受到负面影响。
根据PHP Documentation json_decode
函数,有一个名为assoc的参数,它将返回的对象转换为关联数组
mixed json_decode ( string $json [, bool $assoc = FALSE ] )
由于assoc参数是FALSE
默认设置,因此您必须将此值设置TRUE
为才能检索数组。
检查以下代码以获得示例含义:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
输出:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
这也将其更改为数组:
<?php
print_r((array) json_decode($object));
?>
json_decode($object, true);
的true
那样,这浪费了CPU /内存,而内部却要快得多。
json_decode
+投放比同时运行两种都快45%json_decode
。另一方面,两者都是如此之快,以至于除非您需要数以千计的解码,否则两者之间的差异可以忽略不计。
json_decode
支持第二个参数,设置为第二个参数TRUE
将返回,Array
而不是stdClass Object
。检查函数的手册页json_decode
以查看所有受支持的参数及其详细信息。
例如,尝试以下操作:
$json_string = 'http://www.example.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, TRUE); // Set second argument as TRUE
print_r($obj['Result']); // Now this will works!
json_decode($data, true); // Returns data in array format
json_decode($data); // Returns collections
因此,如果要使用数组,则可以在json_decode
函数中将第二个参数传递为“ true” 。
我希望这能帮到您
$json_ps = '{"courseList":[
{"course":"1", "course_data1":"Computer Systems(Networks)"},
{"course":"2", "course_data2":"Audio and Music Technology"},
{"course":"3", "course_data3":"MBA Digital Marketing"}
]}';
使用Json解码功能
$json_pss = json_decode($json_ps, true);
在PHP中循环遍历JSON数组
foreach($json_pss['courseList'] as $pss_json)
{
echo '<br>' .$course_data1 = $pss_json['course_data1']; exit;
}
结果:计算机系统(网络)
在PHP json_decode中将json数据转换为与PHP相关的数组,
例如:$php-array= json_decode($json-data, true);
print_r($php-array);
请尝试这个
<?php
$json_string = 'http://www.domain.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, true);
echo "<pre>"; print_r($obj['Result']);
?>
尝试这样:
$json_string = 'https://example.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj->Result);
foreach($obj->Result as $value){
echo $value->id; //change accordingly
}
$ob->Result
。