使用此代码,我正在迭代一个对象。
作品:
- 带有 WAMP 和 PHP 5.2.9 的 Windows
- 带有 PHP 5.2.10 的 Linux 网络服务器
它不适用于我的桌面:
- 来自 repo 的 Ubuntu 9.10 和 PHP 5.2.10-2
$incomingData = json_decode($_POST['data']); foreach($incomingData as $key => $action) { }
为 foreach() 提供的参数无效
使用此代码,我正在迭代一个对象。
作品:
它不适用于我的桌面:
$incomingData = json_decode($_POST['data']); foreach($incomingData as $key => $action) { }
为 foreach() 提供的参数无效
也许您的一台服务器启用了magic_quotes_gpc,因此您可以在解码之前尝试在$_POST['data'] 上使用stripslashes。两个 PHP 版本都应该能够遍历对象。
您确定您的 PHP 版本正确吗?
从文档中foreach
:
从 PHP 5 开始,也可以迭代对象。
尝试json_decode
将第二个参数设置为true
, 以json_decode
返回关联数组而不是对象。
$incomingData = json_decode($_POST['data'], true);
其中第二个参数$assoc
(默认为false
)表示:
时
TRUE
,返回的对象将被转换为关联数组。
我的猜测是一个盒子的 PHP 5 不到。
要确认这是问题所在,请尝试更改$incomingData
为某种无害的关联数组:
$incomingData = array("foo" => "bar", "baz" => "monkey");
看看这是否会使错误消失。
尝试做:
$data_array = get_object_vars(json_decode($json_data)); print_r($data_array); 仅当您从某些网页获取信息时,例如 $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 字符串;不起作用。