21

添付のコードは、「通知: 配列から文字列への変換...」を返しています。単純に、私の配列は「配列」という単語を含む文字列としてリモート サーバーに処理されています。残りの変数は問題ありません。

$anarrayこの問題を起こさずに配列を渡すにはどうすればよいですか?

<?php

$data = array(
    'anarray' => $anarray,
    'var1' => $var1,
    'var2' => $var2
 );

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "MY_URL");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);

?>
4

5 に答える 5

34

使用するhttp_build_query()

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
// The values of variables will be shown but since we don't have them this is what we get

$_POSTその後、スーパーグローバルを使用して通常どおりアクセスできます

于 2010-01-28T21:43:48.957 に答える
15

目的を達成するための最良の方法は、 を使用することですhttp_build_query()

于 2010-01-28T22:17:31.670 に答える
1

http://www.php.net/manual/en/function.curl-setopt.phpからCURLOPT_POSTFIELDS の説明

HTTP「POST」操作で投稿する完全なデータ。ファイルを投稿するには、ファイル名の前に @ を付け、フル パスを使用します。ファイルタイプは、ファイル名の後に「;type=mimetype」の形式でタイプを指定することにより、明示的に指定できます。このパラメーターは、'para1=val1¶2=val2&...' のような urlencoded 文字列として渡すか、フィールド名をキーとしてフィールド データを値として持つ配列として渡すことができます。値が配列の場合、Content-Type ヘッダーは multipart/form-data に設定されます。PHP 5.2.0 以降、ファイルが @ 接頭辞付きでこのオプションに渡される場合、値は配列でなければなりません。

于 2013-05-01T17:27:31.600 に答える
1

HTTP プロトコルの性質と curl_setopt 関数の動作方法により、$anarray を配列として直接渡すことはできません。

次のステートメント:

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

POST パラメータの配列を取り、それぞれに文字列名とSTRING値が必要です。代わりに配列値を渡しているため、PHP プロセッサは、前述の通知 (「配列から文字列への変換...」) の発行を引き起こす、不完全な組み込みアルゴリズムを使用してそれを文字列に変換することを余儀なくされます。

したがって、その配列 ($anarray) を反対側に適切に渡すには、自分で (文字列への) エンコードを処理する必要があり、反対側は (文字列からの) デコードを処理する必要があります。 )。

そのような状況での私のアプローチは JSON です。ほとんどすべての場合に十分に適しています。あなたがしなければならないのは、次のテクニックを適用することだけです:

$data=array(
    'anarray'=>json_encode($anarray),
    'var1'=>$var1,
    'var2'=>$var2
    );

そして、接続の反対側では、次の方法で元の配列を取得します。

$anarray=json_decode($_POST['anarray'],true); // true indicates for associative array rather than an object
于 2013-06-24T16:56:08.380 に答える
0

$anarray が配列である場合、私が疑うように、配列であってはなりません。連結または適切な方法で文字列に変換します。

編集: Eric Butera の回答を参照してください。

于 2010-01-28T21:43:22.443 に答える