Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP“;为foreach()提供的参数无效;在共享服务器上_Php_Arrays_Json - Fatal编程技术网

PHP“;为foreach()提供的参数无效;在共享服务器上

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

我在这里使用PHP5。我有以下代码:

$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.0
PECL-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,并且没有给出错误。我没有日志,所以我对这个问题没有把握。看不到任何影响我答案的编辑。好的。没有看到任何影响我答案的编辑内容。