Json_decode到数组

我试图解码JSON字符串到一个数组,但我得到以下错误。

致命错误:不能使用类型对象 作为数组中的stdClass C:\wamp\www\temp\asklaila.php联机 6 < / p >

代码如下:

<?php
$json_string = 'http://www.domain.com/jsondata.json';


$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj['Result']);
?>
816664 次浏览

根据的文档,如果你想要一个关联数组而不是来自json_decode的对象,你需要指定true作为第二个参数。代码如下:

$result = json_decode($jsondata, true);

如果你想要integer键而不是属性名:

$result = array_values(json_decode($jsondata, true));

然而,在你当前的解码中,你只是将它作为一个对象访问:

print_r($obj->Result);

试试这个

$json_string = 'http://www.domain.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata,true);
echo "<pre>";
print_r($obj);

这也会把它变成一个数组:

<?php
print_r((array) json_decode($object));
?>

这是一个后期的贡献,但是使用(array)强制转换json_decode是有效的

$jsondata = '';
$arr = json_decode($jsondata, true);
foreach ($arr as $k=>$v){
echo $v; // etc.
}

如果$jsondata作为空字符串返回(在我的经验中经常是这样),json_decode将返回NULL,导致错误警告:在第3行为foreach()提供的参数无效。你可以添加一行if/then代码或三元操作符,但在我看来,简单地将第2行更改为…

$arr = (array) json_decode($jsondata,true);

... 除非你同时json_decodeing数百万个大型数组,在这种情况下,就像@TCB13指出的那样,性能可能会受到负面影响。

在PHP json_decode转换json数据到PHP关联数组
For Ex: $php-array= json_decode($json-data, true); print_r (php数组美元);< /代码> < / p >

请试试这个

<?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
}

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!

根据PHP文档json_decode函数有一个名为协会的参数,它将返回的对象转换为关联数组

 mixed json_decode ( string $json [, bool $assoc = FALSE ] )

因为协会参数默认为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)
}
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;


}

计算机系统(网络)