ホームページ >バックエンド開発 >PHPチュートリアル >PHP は CURL を使用して多次元配列の問題を渡します

PHP は CURL を使用して多次元配列の問題を渡します

WBOY
WBOYオリジナル
2016-06-23 13:29:121186ブラウズ

今度は API を書きたいのですが、curl を使用してパラメーターを渡すときに多次元配列の送信に問題があります

 {        $post_data = array(            'auth-userid' => 611510,            'api-key' => 'api',            'domain-name'=>array('domain1','domain2'),            'tlds' => 'com',        );        $result=http_build_query($post_data);              var_dump($result);    }

使い始めたとき、ドメイン パラメーターの損失に関するエラーが発生し続けました。次に、渡されたデータを確認すると、次のようになりました。
文字列 'auth-userid=611510&api-key=api&
domain-name%5B0%5D=domain1&domain-name%5B1%5D=domain2&tlds=com' (length=93) ;

渡したいものは
'auth-userid=611510&api -key=api&
domain-name=domain1&domain-name=domain2&tlds=com' である必要があります
このようにすると、http_build_query() が使用されるのはなぜですか。 ? 二次元配列では、この %5B0%5D と %5B1%5D が現れます。 これを解決する方法


ディスカッションへの返信 (解決策)

実は、この問題は非常に簡単です。
http_build_query ? URL エンコード後にリクエスト文字列を生成します
生成されるのは URL エンコードされた文字列です。中身はすべて暗号化されています。

$post_data = array(            'auth-userid' => 611510,            'api-key' => 'api',            'domain-name'=>array('domain1','domain2'),            'tlds' => 'com',        );        $result=http_build_query($post_data);              var_dump($result);        var_dump(urldecode($result));

を使用すると、データはドメイン名[0]=ドメイン1&ドメイン名[1]=のように転送されます。

より多くの技術を学ぶために技術グループへようこそ 231566327

%5B0%5D は [] の角括弧のペアです

これは php のルールに従って生成されます

相手が php でない場合は、
domain を押してください-name [] この名前はドメイン名のメンバーにアクセスします または削除することもできます
$result = str_replace('%5B0%5D', '', http_build_query($post_data))

相手がphpの場合、ただ削除してはなりません。そうしないと、データが少なくなります

その場合、アドレスを使用して URL をエンコードする必要があります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。