ホームページ > バックエンド開発 > PHPチュートリアル > PHPでJSONからデータを抽出するにはどうすればよいですか?

PHPでJSONからデータを抽出するにはどうすればよいですか?

WBOY
リリース: 2016-06-23 13:58:23
オリジナル
1000 人が閲覧しました

私は現在、Baidu Maps の API を勉強していますが、いくつかの問題に遭遇しました
たとえば、この情報は http://likeapp.duapp.com/yx/4.php にありますが、たくさんあります。 Baidu のフィールドの説明は次のとおりです http://developer.baidu.com/map/direction-api.htm#place8_3
stepstruction フィールドのデータを抽出するにはどうすればよいですか? 専門家の回答をお願いします


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

json_decode

json_decode ? JSON 形式で文字列をエンコードする

JSON 形式で文字列をエンコードする

非常に簡単な

専門家がコードを教えてくださいああ、この例については、教えた後、必ずチュートリアルを注意深く読みます。

出力した配列の名前が $ar だとすると、

array_walk_recursive($ar, function($v, $k) { if($k == 'stepInstruction') echo $v; });
ログイン後にコピー

は次の結果を取得します:

Take the Route 12(またはNo. 16,<フォントカラー="0x000000">8 ウェイ2 ウェイターミナル駅まで 360 メートル歩きます国道 19 号線に乗ります (または道路 28 号線 ターミナル駅山水仁嘉駅 820 メートル歩くと ターミナル駅に到着します



$ar = json_decode($json,true) );
array_walk_recursive($v, $k){ if($k == 'stepstruct') echo $v; });


$ar = json_decode($json, true);
array_walk_recursive($v, $k){ if($k == 'stepstruct') echo $v; });

エラーが報告されました : 構文エラー、E:PHPnow-1.5.6htdocs4.php の 12 行目に予期しない T_FUNCTION があります


array_walk_recursive($ar
,

function($v, $k){ if ($k == 'stepstruction') echo $ v; } );
カンマがありません!

php のバージョンが 5.3 より前の場合

array_walk_recursive($ar, 'funv');function func($v, $k) {  if($k == 'stepInstruction') echo $v;}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


array_walk_recursive($ar
,
function($v, $k){ if($k == 'stepstruct') echo $v; });コンマ!

php バージョンが 5.3 より低い場合

array_walk_recursive($ar, 'funv');function func($v, $k) {  if($k == 'stepInstruction') echo $v;}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
警告: array_walk_recursive() [function.array-walk-recursive]: funv() を呼び出すことができません - 関数が E:PHPnow-1.5.6htdocs4.php に存在しません12 行目



array_walk_recursive($ar
,

function($v, $k){ if($k == 'stepstruct') echo $v; });

カンマがありません。

php バージョンが 5.3 より低い場合

array_walk_recursive($ar, 'funv');function func($v, $k) {  if($k == 'stepInstruction') echo $v;}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
警告: array_walk_recursive() [function.array-walk-recursive]: funv() を呼び出すことができません - 関数が E:PHPnow-1.5.6htdocs4.php に存在しません12 行目


funv ->func きっと二階から滑り落ちたのでしょう、


array_walk_recursive($ar, 'func');function func($v, $k) {  if($k == 'stepInstruction') echo $v;}
ログイン後にコピー
ログイン後にコピー



array_walk_recursive($ar , function($v, $k){ if($k == 'stepInstruction') echo $v; });
少了个逗号!

如果你的 php 版本低于 5.3

array_walk_recursive($ar, 'funv');function func($v, $k) {  if($k == 'stepInstruction') echo $v;}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Warning: array_walk_recursive() [function.array-walk-recursive]: Unable to call funv() - function does not exist in E:\PHPnow-1.5.6\htdocs\4.php on line 12



funv ->func 一定是楼上手滑了,



是的,我想逐个怎么做到啊,上面得到的数据“乘坐12路(或16路,8路,2路),经过4站,到达东港贸易城站步行360米,到达终点站乘坐19路(或28路),经过5站,到达碧海莲缘站步行270米,到达终点站乘坐17路,经过3站,到达山水人家站步行820米,到达终点站 ”
变成这样:
方案一:乘坐12路(或16路,8路,2路),经过4站,到达东港贸易城站步行360米,到达终点站
方案二:乘坐19路(或28路),经过5站,到达碧海莲缘站步行270米,到达终点站
方案三:乘坐17路,经过3站,到达山水人家站步行820米,到达终点站

这个我好想做到了,加个br就好了

function func($v, $k) {  static $cnt=1;  if($k == 'stepInstruction')   {       echo '方案',$cnt,':',$v,'</br>';  }}
ログイン後にコピー

34567 function func($v, $k) {  static $cnt=1;  if($k == 'stepInstruction')   {       echo '方案',$cnt,':',$v,'</br>';       $cnt++;  }} 
ログイン後にコピー

csdn好恶心, 上边两层楼,第一个忘记 $cnt++了。 lz问题解决了就结贴吧, 话说这种基础问题,还是多看看书。

csdn好恶心, 上边两层楼,第一个忘记 $cnt++了。 lz问题解决了就结贴吧, 话说这种基础问题,还是多看看书。

还有一个问题,就是得到数据能不能不要网页的代码啊乘坐12路(或16路,8路,2路

把代码去掉,得到纯文字信息怎么弄啊

array_walk_recursive($ar, 'func');function func($v, $k) {  if($k == 'stepInstruction') echo $v;}
ログイン後にコピー
ログイン後にコピー

求个正则表达式

不是正则可以胜任的事情,干嘛非要勉为其难呢?

不是正则可以胜任的事情,干嘛非要勉为其难呢?

不是啦,我是说得到之后的数据$v,因为有网页代码存在,我希望这些代码去除掉,得到纯文字信息


echo strip_tags($v);


echo strip_tags($v);

这个函数好强大啊,3Q
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート