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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top