0

我想在两个网站之间传递一个数组,但我很难做到这一点,在我的本地主机中我尝试这个代码:

 $array = array("12" => "val", "34" => "val2");
 $url = 'http://example1.com/save.php';
 $post = 'data='.json_encode($array);
 $ch = curl_init($url);
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 curl_setopt($ch, CURLOPT_HEADER, false);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
 curl_exec($ch);
 curl_close($ch);

然后在 example1.com/save.php 我这样做只是为了测试:

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

 foreach ($result as $key => $value) {
    echo $key.'='.$value.'<br />';
 }

但这给了我这个警告:

  Warning: Invalid argument supplied for foreach() in /home/a2549384/public_html/save.php on line 5

有什么解决办法吗?

4

2 回答 2

0

您应该使用is_array函数检查您传递给 foreach 的是一个数组。错误意味着您正在对不是数组的东西进行 foreach。

检查您的 foreach 并查看 as 之前的内容是否实际上是一个数组。不仅在理论上而且实际上使用var_dump来转储它。

此外,如果您不确定它是否是一个数组,您可以随时使用以下 PHP 示例代码进行检查:

if (is_array($variable)) {

  foreach ($variable as $item) {
   //do something
  }
}
于 2013-01-09T17:19:43.753 回答
0

你可能需要改变

$post = 'data='.json_encode($array);

$post = 'data='.urlencode(json_encode($array));

无论如何,只是var_dump($_POST);在另一边,看看是否有编码错误。

您可以检查解码是否有json_last_error()错误。

于 2013-01-09T17:22:58.703 回答