Pergunta
Cenário:
$x = json_decode( $x );
foreach ( $x as $item )
{
$info[] = $item; //ERROR
}
Eu estou looping embora um datafeed para obter os dados. Eu quero adicionar itens a um objeto stdClass em um loop. Como eu faria isso? Eu não sou tão familiarizado com stdobj do.
Solução
Se você espera que o json_decode para retornar um array, você poderia fazer o seguinte:
$x = json_decode( $x, true ); // returns associative array instead of object
$info = (object) $x;
Mais informações e exemplos podem ser encontrados aqui .
Outras dicas
Se eu entendi corretamente, você deve apenas ser capaz de seguir a sintaxe objeto regular para obter o resultado desejado. Adicionar o segundo parâmetro opcional para set json_decode
para true
para obter o seu json decodificado como uma matriz associativa, como parece que esta é a forma que você está usando-o em.
$info = new stdClass();
$x = json_decode( $x, true );
foreach ( $x as $key => $val) {
$info->$key = $val;
}
Como Ignas ressaltou, porém, os resultados de json_decode()
já voltar como um objeto stdClass, por isso, se você acabou de usar $x = json_decode($x)
, você não precisaria $info
em tudo ... você já teria $x
como um objeto stdClass.
SPL rel="nofollow noreferrer"> ArrayObject
vamos utilizar a mesma sintaxe que gera um erro no o seu exemplo. Isto é, desde que tenha a capacidade de usar um ArrayObject
em vez de um stdClass
.