Question

Avec ce code, je suis itérer à travers un objet.

Travaux:

  • Windows avec WAMP et PHP 5.2.9
  • serveur web Linux avec PHP 5.2.10

Il ne fonctionne pas sur mon bureau:

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

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

}
     

Invalid argument fourni pour   foreach ()

Était-ce utile?

La solution

Peut-être un de vos serveurs a magic_quotes_gpc activé, vous pouvez essayer d'utiliser stripslashes sur $ _POST [ « data »] avant de le décoder. Les deux versions de PHP devraient pouvoir parcourir à travers les objets.

Autres conseils

Êtes-vous sûr que vous avez vos versions de PHP droite?

De la documentation foreach :

  

PHP 5, il est possible d'itérer   des objets aussi.

Essayez d'utiliser json_decode avec le second argument mis à true, pour rendre les tableaux associatifs de retour de json_decode plutôt que les objets.

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

Si le second argument, $assoc (valeur par défaut) false signifie:

  

Quand TRUE, les objets retournés seront convertis en tableaux associatifs.

Je suppose que l'une case a moins de PHP 5.

Pour confirmer que la question est, essayez de changer $incomingData à une sorte de tableau associatif anodin:

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

et voir si cela fait l'erreur disparaissent.

essayer de faire:

$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);

aussi, vous avez probablement essayé de faire json_encode, mais plutôt mettre json_decode ($ _ POST [ 'data']);

sauf si vous avez une chaîne JSON à l'intérieur de $ _POST [ 'data']; il ne fonctionnera pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top