PHP“;为foreach()提供的参数无效;在共享服务器上
我在这里使用PHP5。我有以下代码:PHP“;为foreach()提供的参数无效;在共享服务器上,php,arrays,json,Php,Arrays,Json,我在这里使用PHP5。我有以下代码: $data = json_decode($_POST['data']); foreach ($data as $obj) { ...... } 在foreach函数的行中出现错误“为foreach()提供的参数无效”。这只发生在我的共享服务器帐户上。在我的本地Web服务器上,一切正常$_POST['data']包含有效的JSON字符串。打印(数据);什么都没显示…这里到底出了什么问题 EDIT:我真的很震惊,但是$u POST['data']字符串是用A
$data = json_decode($_POST['data']);
foreach ($data as $obj) {
......
}
在foreach函数的行中出现错误“为foreach()提供的参数无效”。这只发生在我的共享服务器帐户上。在我的本地Web服务器上,一切正常$_POST['data']包含有效的JSON字符串。打印(数据);什么都没显示…这里到底出了什么问题
EDIT:我真的很震惊,但是$u POST['data']字符串是用AJAX发送的,我用FireBug捕获该字符串并复制到JSON测试文件中,如下所示:
$data = json_decode('[{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"}]');
print_r($data);
而它的结果应该是正确的。因此,我将从出现问题的函数中粘贴更多代码:
function saveData($table)
{
$data = json_decode($_POST['data']);
$db = new MySQL(true);
$db->TransactionBegin();
foreach ($data as $obj) {
$id = $obj->id;
$name = $obj->name;
}
}
检查此项:如果我这样做:
$data = json_decode('[{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"}]');
foreach ($data as $obj) {
......
}
工作完美!因此,当我这样做时,似乎存在一个问题:
$data = json_decode($_POST['data']);
但是$\u POST['data']输出了一个完美的JSON字符串。这快把我逼疯了
有什么想法吗
有什么想法吗?
json\u decode
只出现在php5>=5.2.0
PECL-json>=1.2.0
的php5.2.0PECL-json>=1.2.0
上,所以我猜你的主机使用的是较低版本。json\u decode>只出现在php5.2.0
上,所以我猜您的主机使用的是较低版本。$data
是无效的JSON吗?(格式不正确或为空)$data
是无效的JSON吗?(格式不正确或为空)var\u dump($data)
可能会显示$data
为null
。发件人:
如果json无法执行,则返回NULL
被解码,或者如果编码的数据是
比递归限制更深
如果该行为是您的共享服务器特有的,那么它的递归限制可能低于您的本地服务器。var\u dump($data)
可能会显示$data
为null
。发件人:
如果json无法执行,则返回NULL
被解码,或者如果编码的数据是
比递归限制更深
如果该行为是您的共享服务器所特有的,那么它的递归限制可能低于您的本地服务器。magic\u quotes\u gpc。。。引自php.net:
启用时,所有“(单引号),”
(双引号)、\(反斜杠)和NULL
字符用一个
自动反斜杠
事实证明,共享服务器上启用了magic quotes。感谢您的回答。magic\u quotes\u gpc…引自php.net:
启用时,所有“(单引号),”
(双引号)、\(反斜杠)和NULL
字符用一个
自动反斜杠
事实证明,magic quotes是在共享服务器上启用的。感谢您的回答。在到达foreach之前调用未定义函数不会导致错误(实际上是致命错误)吗?这会在不存在的json_decode()
上引发致命错误。我以前遇到过这种情况,PHP(在共享主机上)也有json_encode函数,但不是PECL,也没有给出错误。我没有访问日志的权限,所以我对这个问题没有把握。在到达foreach之前调用未定义的函数不会导致错误(实际上是致命错误)吗?这会在不存在的json\u decode()
上引发致命错误。我以前遇到过这种情况,PHP(也在共享主机上)也会出现这种情况有json_encode函数,但没有PECL,并且没有给出错误。我没有日志,所以我对这个问题没有把握。看不到任何影响我答案的编辑。好的。没有看到任何影响我答案的编辑内容。