试图在 stdclass 对象中获取非对象的 属性

Trying to get property of non-object in stdclass object

我正在尝试与 API 集成。假设以下代码有效。

$lists = $ac->api("list/list_", array("ids" => "all"));

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

输出如下stdclass对象

stdClass Object
(
    [0] => stdClass Object
        (
            [id] => 1
            [name] => List 3
            [cdate] => 2018-02-27 08:19:39
            [private] => 0
            [userid] => 1
            [subscriber_count] => 0
        )

    [result_code] => 1
    [result_message] => Success: Something is returned
    [result_output] => json
    [http_code] => 200
    [success] => 1
)

以下代码

            foreach($lists as $list) {

                   echo $list->id;

               }

显示错误

Trying to get property of non-object

$list->id 行错误。我该如何解决这个问题?

试试这个

foreach($lists as $list) {
       $list = (array)$list;
       if(isset($list['id'])){
           echo $list['id'];
       }
}

这是一个奇怪的结构,发生的事情是它在 result_coderesult_messageresult_outputsuccess 上循环,这些值不是对象。

要么解决这个问题,要么检查各种循环。

foreach ($lists as $key => $list) {
    if (!is_numeric($key) || !is_object($list)) {
        continue;
    }
    echo $list->id;
}

PHP对象干净,好写

// 回显一个PHP数组值

echo $array['value'];

// 回显一个 PHP 对象值

echo $object->value;

现在将 PHP 数组转换(转换)为 PHP 对象。这很简单。我只是在返回数组时将其类型转换为对象。

function array_to_object($array) {
    return (object) $array;
}

以上只是一个例子。您不需要 PHP 函数即可将数组转换为对象。 (object) 函数将对任何 PHP 数组执行此操作。如果您需要将对象更改为数组,请使用 (array) 类型转换函数。

function object_to_array($object) {
    return (array) $object;
}

当 json 中的 return 数据不存在 [ ] 时,在解析数据之前做一个数组。 喜欢样本:

foreach(array($YourData) as $row){
    echo $row->ValueOfYourData;
}