简体   繁体   English

如何在stdClass中获取数组

[英]How to Get Array Inside stdClass

I am trying to decode with json http://digitsolutions4u.com/apps_services/statuslist.php?catid=1 like this 我正在尝试使用json http://digitsolutions4u.com/apps_services/statuslist.php?catid=1进行解码

<?php 
$json_url = "http://digitsolutions4u.com/apps_services/statuslist.php?catid=1";
$json = file_get_contents($json_url);
$json=str_replace('},

]',"}

]",$json);
$data = json_decode($json);

echo "<pre>";
print_r($data);
echo "</pre>";
?>

i want to get all "statusdesc" Values after decode. 我想在解码后获取所有“ statusdesc”值。 I am getting results something like this 我得到这样的结果

stdClass Object
(
    [posts] => Array
        (
            [0] => stdClass Object
                (
                    [statusid] => 1329
                    [statusdesc] => love86.jpg
                )
)
)

i just want to list out all statusdesc available on the page like love86.jpg love87.jpg love88.jpg and so on. 我只想列出该页面上所有可用的statusdesc,例如love86.jpg love87.jpg love88.jpg等。 Anyone can provide me solution(code) for this? 有人可以为此提供解决方案(代码)吗? I have tried several threads, but no success. 我尝试了多个线程,但没有成功。

By default json_decode decodes it to an object instead of an associative array. 默认情况下, json_decode解码为对象,而不是关联数组。 You just access the members of that object via the arrow ( -> ) notation. 您只需通过箭头( -> )表示法访问该对象的成员。 To get each post you can use foreach to loop through them. 要获取每个帖子,您可以使用foreach它们。

foreach ($data->posts as $post) {
  echo $post->statusdesc;
}

All you need to do is tell json_decode() that you want it to convert the JSON String to all arrays and not as the JSONString intended an object 您需要做的就是告诉json_decode()您希望它将JSON字符串转换为所有数组,而不是因为JSONString打算作为对象

<?php 
$json_url = "http://digitsolutions4u.com/apps_services/statuslist.php?catid=1";
$json = file_get_contents($json_url);

$data = json_decode($json, true);
// the change ..  ..  ..   ^^^^

echo "<pre>";
print_r($data);
echo "</pre>";
foreach ($json['posts'] as $post) {
    echo $post['statusdesc'] . '<br>';
}
?>

However is is simpler tp deal with it as it is and do 然而,按原样处理是更简单的处理方法吗?

<?php 
$json_url = "http://digitsolutions4u.com/apps_services/statuslist.php?catid=1";
$json = file_get_contents($json_url);

$data = json_decode($json);

//echo "<pre>";
//print_r($data);
//echo "</pre>";

foreach ($json->posts as $post) {
    echo $post->statusdesc . '<br>';
}
?>

use json_decode() with second parameter true . json_decode()与第二个参数true it's return the json string as associative array . 它返回json字符串作为关联数组。 and use array_column like this 并像这样使用array_column

<?php

    $response ='{"posts":[{"statusid":"1329","statusdesc":"love86.jpg"},{"statusid":"1328","statusdesc":"love85.jpg"},{"statusid":"1327","statusdesc":"love84.jpg"},{"statusid":"1326","statusdesc":"love83.jpg"},{"statusid":"1325","statusdesc":"love82.jpg"},{"statusid":"1324","statusdesc":"love81.jpg"},{"statusid":"1323","statusdesc":"love80.jpg"},{"statusid":"1322","statusdesc":"love79.jpg"},{"statusid":"1321","statusdesc":"love78.jpg"},{"statusid":"1320","statusdesc":"love77.jpg"},{"statusid":"1319","statusdesc":"love76.jpg"},{"statusid":"1318","statusdesc":"love75.jpg"},{"statusid":"1317","statusdesc":"love74.jpg"},{"statusid":"1316","statusdesc":"love73.jpg"},{"statusid":"1315","statusdesc":"love72.jpg"},{"statusid":"1314","statusdesc":"love71.jpg"},{"statusid":"1313","statusdesc":"love70.jpg"},{"statusid":"1312","statusdesc":"love69.jpg"},{"statusid":"1311","statusdesc":"love68.jpg"},{"statusid":"1310","statusdesc":"love67.jpg"},{"statusid":"1287","statusdesc":"love66.jpg"},{"statusid":"1286","statusdesc":"love65.jpg"},{"statusid":"1285","statusdesc":"love64.jpg"},{"statusid":"1284","statusdesc":"love63.jpg"},{"statusid":"1283","statusdesc":"love62.jpg"},{"statusid":"1282","statusdesc":"love61.jpg"},{"statusid":"1204","statusdesc":"love60.jpg"},{"statusid":"1203","statusdesc":"love59.jpg"},{"statusid":"1202","statusdesc":"love58.jpg"},{"statusid":"1201","statusdesc":"love57.jpg"},{"statusid":"1200","statusdesc":"love56.jpg"},{"statusid":"1199","statusdesc":"love55.jpg"},{"statusid":"1045","statusdesc":"love54.jpg"},{"statusid":"1044","statusdesc":"love53.jpg"},{"statusid":"1043","statusdesc":"love52.jpg"},{"statusid":"1042","statusdesc":"love51.jpg"},{"statusid":"1004","statusdesc":"love50.jpg"},{"statusid":"1003","statusdesc":"love49.jpg"},{"statusid":"1002","statusdesc":"love48.jpg"},{"statusid":"1001","statusdesc":"love47.jpg"},{"statusid":"1000","statusdesc":"love46.jpg"},{"statusid":"239","statusdesc":"love45.jpg"},{"statusid":"238","statusdesc":"love44.jpg"},{"statusid":"237","statusdesc":"love43.jpg"},{"statusid":"236","statusdesc":"love42.jpg"},{"statusid":"235","statusdesc":"love41.jpg"},{"statusid":"234","statusdesc":"love40.jpg"},{"statusid":"233","statusdesc":"love39.jpg"},{"statusid":"232","statusdesc":"love38.jpg"},{"statusid":"231","statusdesc":"love37.jpg"},{"statusid":"230","statusdesc":"love36.jpg"},{"statusid":"229","statusdesc":"love35.jpg"},{"statusid":"228","statusdesc":"love34.jpg"},{"statusid":"227","statusdesc":"love33.jpg"},{"statusid":"226","statusdesc":"love32.jpg"},{"statusid":"31","statusdesc":"love31.jpg"},{"statusid":"30","statusdesc":"love30.jpg"},{"statusid":"29","statusdesc":"love29.jpg"},{"statusid":"28","statusdesc":"love28.jpg"},{"statusid":"27","statusdesc":"love27.jpg"},{"statusid":"26","statusdesc":"love26.jpg"},{"statusid":"25","statusdesc":"love25.jpg"},{"statusid":"24","statusdesc":"love24.jpg"},{"statusid":"23","statusdesc":"love23.jpg"},{"statusid":"22","statusdesc":"love22.jpg"},{"statusid":"21","statusdesc":"love21.jpg"},{"statusid":"20","statusdesc":"love20.jpg"},{"statusid":"19","statusdesc":"love19.jpg"},{"statusid":"18","statusdesc":"love18.jpg"},{"statusid":"17","statusdesc":"love17.jpg"},{"statusid":"16","statusdesc":"love16.jpg"},{"statusid":"15","statusdesc":"love15.jpg"},{"statusid":"14","statusdesc":"love14.jpg"},{"statusid":"13","statusdesc":"love13.jpg"},{"statusid":"12","statusdesc":"love12.jpg"},{"statusid":"11","statusdesc":"love11.jpg"},{"statusid":"10","statusdesc":"love10.jpg"},{"statusid":"9","statusdesc":"love9.jpg"},{"statusid":"8","statusdesc":"love8.jpg"},{"statusid":"7","statusdesc":"love7.jpg"},{"statusid":"6","statusdesc":"love6.jpg"},{"statusid":"5","statusdesc":"love5.jpg"},{"statusid":"4","statusdesc":"love4.jpg"},{"statusid":"3","statusdesc":"love3.jpg"},{"statusid":"2","statusdesc":"love2.jpg"},{"statusid":"1","statusdesc":"love1.jpg"}]}';

    $response_array = json_decode($response,true);

    $final_res =  array_column($response_array['posts'],'statusdesc');

    print_r($final_res);

?>

OUTPUT : 输出:

Array
(
    [0] => love86.jpg
    [1] => love85.jpg
    [2] => love84.jpg
    [3] => love83.jpg
    [4] => love82.jpg
    [5] => love81.jpg
    [6] => love80.jpg
    ......
 )
$json_url = "http://digitsolutions4u.com/apps_services/statuslist.php?catid=1";
$json = file_get_contents($json_url);

this should return you array of object(stdClass) 这应该返回对象数组(stdClass)

$elm = json_decode( $json );
var_dump( $elm->posts );

you can get one of your string in this way: 您可以通过以下方式获取字符串之一:

$elm->posts[5]->statusdesc

or you can convert your json into array using json_decode( $json, true ) 或者您可以使用json_decode($ json,true)将json转换为数组

NOTE: json_decode can't remember your original class as serialize it always return stdClass (you can access to properties but not to the methods of the original class) 注意:json_decode不能记住您的原始类,因为对其进行序列化总是返回stdClass(您可以访问属性,但不能访问原始类的方法)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM