PHP 5.2.10 Ubuntu PHP 5.2.10-2 Works nesnesi yineleyemezsiniz?

3 Cevap php

Bu kod ile ben bir nesne yineleme duyuyorum.

Works:

  • WAMP ve PHP 5.2.9 Windows
  • PHP 5.2.10 Linux web sunucusu

Benim masaüstünde çalışmıyor:

  • Ubuntu 9.10 with PHP 5.2.10-2 from the repo's
$incomingData = json_decode($_POST['data']);

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

}

Invalid argument supplied for foreach()

3 Cevap

Belki sunuculardan biri magic_quotes_gpc sağladı, böylece bunu deşifre önce $ _POST ['veri'] üzerinde stripslashes kullanmayı deneyebilirsiniz. Hem PHP sürümleri nesneler arasında yineleme gerekir.

Eğer sağ PHP sürümleri var emin misiniz?

Için belgelere foreach :

As of PHP 5, it is possible to iterate objects too.

json_decode ilişkilendirilebilir diziler yerine, nesneleri döndürmek yapmak için, json_decode with the second argument set to true kullanmayı deneyin.

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

Nerede ikinci argüman, gelir $assoc (false varsayılan):

TRUE, döndüğünde nesneler ilişkisel diziler dönüştürülecektir.

Benim tahminim bir kutu PHP 5 daha az olmasıdır.

Bu mesele onaylamak için, zararsız birleşmeli dizinin çeşit $incomingData değiştirmeyi deneyin:

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

o gitmek hata yaparsa ve bakın.

yapmaya çalışın:

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

Ayrıca, muhtemelen json_encode yapmaya çalışıyorduk, ama bunun yerine json_decode ($ _POST ['veri']) koymak;

Eğer $ _POST ['veri'] içinde dize json sürece; o iş olmaz.