ホームページ >バックエンド開発 >PHPチュートリアル >CURL を配列問題に解析した後の結果

CURL を配列問題に解析した後の結果

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

index.php、echo json_encode 後の結果は次のとおりです:
{"11":{"l_id":"11","l_title":"CITS-香港観光 1 日ツアー [質の高い純粋な楽しみ]"}, "12 ":{"l_id":"12","l_title":"test"}}

そしてクライアントコード(client.php)は以下の通りです:

$curlPost='key='.urlencode($key);$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);$data=curl_exec($ch);curl_close($ch);echo json_decode($data,true);

得られる結果も
{" 11":{" l_id":"11","l_title":"CITS-香港観光 1 日ツアー [質と純粋な楽しみ]"},"12":{"l_id":"12","l_title" :"test"}}

以下の方法に変更する方法を教えてください、よろしくお願いします
Array
(
[11] => Array
( gt; CITS-香港観光1日ツアー【クオリティピュア】プレイ】

; テスト
)

)







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

結果をデータベースに挿入したいので、

foreach($arr as $f) ただし、配列形式でないと仕方がありません

結果をデータベースに挿入するには、

foreach($arr as $f) を使用する必要があります
ただし、配列形式でないと無理です

私の目的は、ステーションaとbの2つがあり、ステーションaがアップロードすることです。ステーションBには、たくさんのものがあり、テーブルがたくさんあります。ステーションBは、ステーションAの2つのテーブル1と2を使用する必要があります。 A のテーブル 1 と 2 を取得してステーション B のデータベースに挿入したいので、ステーション A: //www.cits-sz.net/api/index.php ファイルに http があり、クライアントを使用します。 .php をステーション b で取得し、関連する操作を実行します。

それからもう一度 json_decode します

$s = '{"11":{"l_id":"11","l_title":"CITS-香港观光一天游【品质纯玩】"},"12":{"l_id":"12","l_title":"test"}}';print_r(json_decode($s,1));
Array(    [11] => Array        (            [l_id] => 11            [l_title] => CITS-香港观光一天游【品质纯玩】        )    [12] => Array        (            [l_id] => 12            [l_title] => test        ))



とても奇妙です、私はこの文を使用します、curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php') ); 表示されるものはシリアル化されています
この文を使用してください。curl_setopt($ch,CURLOPT_URL,'localhost/szgl/api/index.php'); ローカルであればこれは正常です

なぜ結果をローカルで取得してアップロードするのですか結果は異なりますか? ?ローカルでは配列ですが、サーバー上では文字列になります


http://www.cits-sz.net/api/index.php にアクセスしてください
取得:
アクセス許可がありません

何も言えません


http://www.cits-sz.net/api/index.php にアクセスしてください
取得:
アクセス許可がありません

何と言ったらよいかわかりません

これに直接アクセスすることはできません。後ろに鍵があります、
これです
http://www.cits-sz.net/api/index.php?key=01f34958ba730edc2ca30d65245dd6a0


http://www.cits-sz.net/ にアクセスしてくださいapi/index.php
取得:
アクセス許可がありません
何を言えばいいのかわかりません

これを一時的なテスト用のクライアントと見なします
http://www.cits-sz.net です。 /api/client.php.

<?phpinclude("../includes/application_top.php");$key='01f34958ba730edc2ca30d65245dd6a0';$curlPost='key='.urlencode($key);$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');//(1)//curl_setopt($ch,CURLOPT_URL,'http://localhost/szgl/api/index.php');//(2)curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);$data=curl_exec($ch);curl_close($ch);echo $a=json_decode($data,TRUE);//echo gettype($json);/*foreach($a as $f){	echo $f["l_title"];}*/?>
内のコード
で (2) を使用します。ローカルで配列にすることもできますが、(1) は使用せず、元の情報です。


http://www.cits-sz.net/api/index.php にアクセスしてください
取得:
アクセス許可がありません
何も言えません

api/index.php ファイルのコードは次のとおりです以下の通り:

<?phpinclude("../includes/application_top.php");function arrayRecursive(&$array, $function, $apply_to_keys_also = false){    static $recursive_counter = 0;    if (++$recursive_counter > 1000) {        die('possible deep recursion attack');    }    foreach ($array as $key => $value) {        if (is_array($value)) {            arrayRecursive($array[$key], $function, $apply_to_keys_also);        } else {            $array[$key] = $function($value);        }         if ($apply_to_keys_also && is_string($key)) {            $new_key = $function($key);            if ($new_key != $key) {                $array[$new_key] = $array[$key];                unset($array[$key]);            }        }    }    $recursive_counter--;}function JSON($array){	arrayRecursive($array, 'urlencode', true);	$json = json_encode($array);	return urldecode($json);}$key=Reqs("key");if ($key<>'01f34958ba730edc2ca30d65245dd6a0'){	echo '无权限访问';exit;}$sql='select l_id,l_title from '.TAB_TRAVEL_LINE.' order by l_id';$rsline=$mydb->query($sql,2);while ($fline=$rsline->movenext()){	$data_line[]=$fline;}//上面那几句是自己的读取数据的echo $a=JSON($data_line);?>


$key='01f34958ba730edc2ca30d65245dd6a0';$curlPost='key='.urlencode($key);$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');//(1)curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);$data=curl_exec($ch);curl_close($ch);print_r(json_decode(substr($data, 3), 1));//去掉 BOM 头后再解码
Array(    [0] => Array        (            [l_id] => 11            [l_title] => CITS-香港观光一天游【品质纯玩】        )    [1] => Array        (            [l_id] => 12            [l_title] => test        ))


$key='01f34958ba730edc2ca30d65245dd6a0';$curlPost='key='.urlencode($key);$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');//(1)curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);$data=curl_exec($ch);curl_close($ch);print_r(json_decode(substr($data, 3), 1));//去掉 BOM 头后再解码
Array(    [0] => Array        (            [l_id] => 11            [l_title] => CITS-香港观光一天游【品质纯玩】        )    [1] => Array        (            [l_id] => 12            [l_title] => test        ))

モデレーター

xuzuning

に感謝します。問題は完全に解決され、善良な人々は安全な生活を送っています。

したがって、BOM ヘッダーがあってはなりません
こうすれば、物事は簡単になります
だから、BOM ヘッダーがあってはなりません こうすれば、物事は簡単になります


学びました、ありがとう。

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