Я пытаюсь интегрировать с 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 неверна. Как я могу это исправить?
Это странная структура, то, что происходит, это ее зацикливание result_code
, result_message
, result_output
, success
значения которых не являются объектами.
Либо исправьте это, либо сделайте проверку в цикле сортировки.
foreach ($lists as $key => $list) {
if (!is_numeric($key) || !is_object($list)) {
continue;
}
echo $list->id;
}
попробуй это
foreach($lists as $list) {
$list = (array)$list;
if(isset($list['id'])){
echo $list['id'];
}
}
PHP-объекты чисты и просты в написании.
// Вывод значения PHP Array
echo $array['value'];
// Вывод значения объекта PHP
echo $object->value;
Теперь перейдем к преобразованию (приведению) массива PHP в объект PHP. Это очень просто. Я просто набираю приведение массива как объекта при его возвращении.
function array_to_object($array) {
return (object) $array;
}
Выше приведен только пример. Вам не нужна функция PHP для преобразования массива в объект. Функция (объект) сделает это с любым массивом PHP. Если вам когда-либо понадобится изменить объект в массив, используйте функцию приведения типа (массив).
function object_to_array($object) {
return (array) $object;
}