Ne peut pas itérer objet dans Ubuntu PHP 5.2.10-2 Works sur PHP 5.2.10?
-
13-09-2019 - |
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 ()
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.