Вопрос

Сценарий:

$x = json_decode( $x );
foreach ( $x as $item )
{
    $info[] = $item;  //ERROR
}

Я перебираю фид данных, чтобы получить данные. Я хочу добавить элементы в объект stdClass в цикле. Как бы я это сделал? Я не очень знаком с stdobj.

Это было полезно?

Решение

Если вы ожидаете, что json_decode вернет массив, вы можете сделать следующее:

$x = json_decode( $x, true ); // returns associative array instead of object
$info = (object) $x;

Дополнительную информацию и примеры можно найти .

Другие советы

Если я вас правильно понимаю, вы должны просто следовать синтаксису обычного объекта, чтобы получить желаемый результат. Добавьте необязательный второй параметр в json_decode , установленный в true , чтобы ваш json был декодирован как ассоциативный массив, как будто это форма, которую вы используете в .

$info = new stdClass();
$x = json_decode( $x, true );
foreach ( $x as $key => $val) { 
    $info->$key = $val;
}

Как указал Игнас, результаты json_decode () уже возвращаются как объект stdClass, поэтому, если вы просто использовали $ x = json_decode ($ x) вам вообще не понадобится $ info ... у вас уже будет $ x в качестве объекта stdClass.

SPL ArrayObject давайте использовать тот же синтаксис, который генерирует ошибку в вашем примере. Это при условии, что у вас есть возможность использовать ArrayObject вместо stdClass .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top