ホームページ  >  記事  >  バックエンド開発  >  phpを使って複雑なjsonデータを取得して出力する方法

phpを使って複雑なjsonデータを取得して出力する方法

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

これは、現在のオンライン カスタマー サービスを表示するために複数のカスタマー サービスを呼び出すときの WeChat API です

戻りデータの例 (正しい場合は JSON 結果が返されます):

{    "kf_online_list": [        {            "kf_account": "test1@test",            "status": 1,            "kf_id": "1001",            "auto_accept": 0,            "accepted_case": 1        },        {            "kf_account": "test2@test",            "status": 1,            "kf_id": "1002",            "auto_accept": 0,            "accepted_case": 2        }    ]}


以下は私のコードです:

$url_online ="https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token={$access_token}";$output_online=file_get_contents($url_online);$jsonStr = json_decode($output_online,true);//读取信息:$content = "客服1:".$jsonStr["kf_online_list"]["kf_account"]."\n在线状态:".$jsonStr["kf_online_list"]["status"]."\n正在接待人数:".$jsonStr["kf_online_list"]["accepted_case"]."\n\n客服2:".$jsonStr["kf_online_list"]["kf_account"]."\n在线状态:".$jsonStr["kf_online_list"]["status"]."\n正在接待人数:".$jsonStr["kf_online_list"]["accepted_case"];?>


当初はこうすることを望んでいましたすべての kf_account データを取得し、WeChat 応答インターフェイスに戻りますが、構造は少し複雑で、同じフィールドがあります。 。 。
まだ結果はありません。最終的な json 配列が間違って記述されていると思います。お役に立てれば幸いです。


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

https を使用する場合、file_get_contents に警告があるようです。それを確認するには、表示エラーをオンにする必要があります
この種の問題は、最後の変数を段階的に var_dump することで判断できます。

それはわかっています どうしたのですか? $

jsonStr["kf_online_list"]["kf_account"]
の 2 つの [][] の間に [0]=>
jsonStr["kf_online_list"][0]["kf_account"]
を追加するだけです。 。

print_r($data);

デコードされた ???? を見てください、簡単ではありませんか?

2 次元配列を 1 次元アクセスとして扱うことは、もちろん機能しません

$status=array('0'=>'不在线','1'=>'电脑在线','2'=>'手机在线','3'=>'电脑手机在线');//$onlinestatus=$jsonStr["kf_online_list"][0]["status"];foreach ($jsonStr['kf_online_list'] as $list){	foreach ($list[kf_account] as $account)	{		foreach ($list[status] as $onlinestatus)		{			$statusStr0=$status[$onlinestatus];			foreach ($list[accepted_case] as $jiedai)			{				$content.="客服:".$account."\n在线状态:"."$statusStr0"."\n正在接待人数:"."$jiedai"."\n\n";			}		}	}}

これは私が書いた別のコードですが、foreach ($list[kf_account] as $account) の行にエラーがあります
エラー: foreach () に指定された引数が無効です。どうすればこれを変更できますか?

for ループを使用するだけです。 。

れーれー

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