Pergunta

Com este código eu sou a iteração através de um objeto.

Works:

  • Windows com WAMP e PHP 5.2.9
  • servidor web Linux com PHP 5.2.10

Não está a trabalhar na minha área de trabalho:

  • Ubuntu 9.10 com PHP 5.2.10-2 de do repo
$incomingData = json_decode($_POST['data']);

foreach($incomingData as $key => $action)
{

}

Argumento inválido fornecido para foreach ()

Foi útil?

Solução

Talvez um dos servidores tem magic_quotes_gpc ativado, assim que você pode tentar usar stripslashes em $ _POST [ 'dados'] antes de decodificá-lo. Ambas as versões do PHP deve ser capaz de iterate através de objetos.

Outras dicas

Você tem certeza de que você tem suas versões do PHP certo?

A partir da documentação para foreach :

A partir do PHP 5, é possível iterate objetos também.

Tente usar json_decode com o segundo conjunto argumento para true, para fazer json_decode retorno arrays associativos, em vez de objetos.

$incomingData = json_decode($_POST['data'], true);

Onde o segundo argumento, $assoc (padrão para false) significa:

Quando os objetos TRUE, voltou serão convertidos em arrays associativos.

Meu palpite é que uma caixa com menos de PHP 5.

Para confirmar que é o problema, tente alterar $incomingData a algum tipo de matriz associativa inócua:

$incomingData = array("foo" => "bar", "baz" => "monkey");

e ver se isso faz com que o erro de ir embora.

tentar fazer:

$data_array = get_object_vars(json_decode($json_data));

print_r($data_array);

this is only if you obtain information from some web page such as

$data = file_get_contents('http://www.someurl.com/somerestful_url/');
$data_array = get_object_vars(json_decode($data));
print_r($data_array);

Além disso, você provavelmente estavam tentando fazer json_encode, mas, em vez colocar json_decode ($ _ POST [ 'dados']);

a menos que você tem dentro de string JSON de US $ _ POST [ 'data']; não vai funcionar.

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