não pode iterar objeto no Ubuntu PHP 5.2.10-2 Obras em PHP 5.2.10?
-
13-09-2019 - |
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 ()
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.