0

私は2つのWebサイト間で配列を渡したいのですが、それを行うのは難しいです。ローカルホストで次のコードを試します:

 $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 に答える