0

このコードでは、オブジェクトを繰り返し処理しています。

作品:

  • Windows と WAMP および PHP 5.2.9
  • PHP 5.2.10 を使用する Linux Web サーバー

私のデスクトップでは動作しません:

  • リポジトリの PHP 5.2.10-2 を使用した Ubuntu 9.10
$incomingData = json_decode($_POST['data']);

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

}

foreach() に無効な引数が指定されました

4

3 に答える 3

3

サーバーの 1 つで magic_quotes_gpc が有効になっている可能性があるため、デコードする前に $_POST['data'] でストリップスラッシュを使用してみることができます。どちらの PHP バージョンも、オブジェクトを反復処理できる必要があります。

于 2009-12-07T13:59:10.057 に答える
2

PHP のバージョンは正しいですか?

のドキュメントからforeach

PHP 5 以降では、オブジェクトの繰り返しも可能です。

オブジェクトではなく連想配列を返すようにするにjson_decodeは、2 番目の引数を に設定して使用してみてください。truejson_decode

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

2 番目の引数$assoc(デフォルトはfalse) の意味は次のとおりです。

の場合TRUE、返されるオブジェクトは連想配列に変換されます。

私の推測では、1 つのボックスには PHP 5 未満のものがあると思います。

それが問題であることを確認するに$incomingDataは、無害な連想配列に変更してみてください。

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

それがエラーを解消するかどうかを確認します。

于 2009-12-07T13:41:38.283 に答える
0

やってみてください:

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

print_r($data_array);

これは、次のような Web ページから情報を取得する場合のみです。

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

また、おそらく json_encode を実行しようとしていましたが、代わりに json_decode($_POST['data']); を配置しました。

$_POST['data']; 内に json 文字列がない限り。効果がないでしょう。

于 2009-12-07T14:05:19.923 に答える