我想在两个网站之间传递一个数组,但我很难做到这一点,在我的localhost中我尝试这个代码:
$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
有什么解决方案吗?
答案 0 :(得分:0)
您应该使用is_array函数检查传递给foreach的内容是否为数组。错误意味着你正在对不是数组的东西做一个foreach。
检查你的foreach并查看as之前的东西是否实际上是一个数组。不仅在理论上,而且实际上使用var_dump来转储它。
此外,如果您不确定它是否为数组,您可以随时使用以下PHP示例代码进行检查:
if (is_array($variable)) {
foreach ($variable as $item) {
//do something
}
}
答案 1 :(得分:0)
您可能需要更改
$post = 'data='.json_encode($array);
到
$post = 'data='.urlencode(json_encode($array));
在任何情况下,只需另一方var_dump($_POST);
,看看是否存在编码错误。
使用json_last_error()
,您可以检查解码时是否有错误。