質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

701閲覧

公共交通オープンデータ(API)のphpでの取得方法

henupyo107

総合スコア202

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2022/01/13 23:24

編集2022/01/13 23:26

前提・実現したいこと

公共交通オープンデータAPIをphpで取得する方法をお聞きしたいです。
小生、phpでの経験は多いものの、APIを使用したことがなく、どのように取得をすれば良いのか困っております。

公共交通オープンデータAPI
https://developer.odpt.org/
にて、東京都交通局の列車ロケーション情報から、

https://api.odpt.org/api/v4/odpt:Train?acl:consumerKey=[ここにapiのアクセスキー]
の情報を取得したいです。

書いてみたコード

php

1$url = "https://api.odpt.org/api/v4/odpt:Train?acl:consumerKey=[ここにapiのアクセスキー]"; 2$json = mb_convert_encoding(file_get_contents($url), 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 3$json_arr = json_decode($json,true); 4var_dump($json_arr);

出力

syuturyoku

1array(149) { 2 [0]=> 3 array(17) { 4 ["@id"]=> 5 string(45) "urn:uuid:7bc51842-ba05-4016-a8ac-e3913056384e" 6 ["@type"]=> 7 string(10) "odpt:Train" 8 ["dc:date"]=> 9 string(25) "2022-01-14T08:17:29+09:00" 10 ["@context"]=> 11 string(41) "http://vocab.odpt.org/context_odpt.jsonld" 12 ["dct:valid"]=> 13 string(25) "2022-01-14T08:18:29+09:00" 14 ["odpt:delay"]=> 15 int(0) 16 ["owl:sameAs"]=> 17 string(28) "odpt.Train:Toei.Asakusa.829N" 18 ["odpt:railway"]=> 19 string(25) "odpt.Railway:Toei.Asakusa" 20 ["odpt:operator"]=> 21 string(18) "odpt.Operator:Toei" 22 ["odpt:toStation"]=> 23 string(33) "odpt.Station:Toei.Asakusa.Togoshi" 24 ["odpt:trainType"]=> 25 string(25) "odpt.TrainType:Toei.Local" 26 ["odpt:trainOwner"]=> 27 string(20) "odpt.Operator:Hokuso" 28 ["odpt:fromStation"]=> 29 string(34) "odpt.Station:Toei.Asakusa.Nakanobu" 30 ["odpt:trainNumber"]=> 31 string(4) "829N" 32 ["odpt:originStation"]=> 33 array(1) { 34 [0]=> 35 string(37) "odpt.Station:Toei.Asakusa.NishiMagome" 36 } 37 ["odpt:railDirection"]=> 38 string(29) "odpt.RailDirection:Northbound" 39 ["odpt:destinationStation"]=> 40 array(1) { 41 [0]=> 42 string(40) "odpt.Station:Hokuso.Hokuso.ImbaNihonIdai" 43 } 44 } 45 [1]=> 46 array(17) { 47 ["@id"]=> 48 string(45) "urn:uuid:2a2df44f-f14a-4851-871a-ff303710d692" 49 ["@type"]=> 50 string(10) "odpt:Train" 51 ["dc:date"]=> 52 string(25) "2022-01-14T08:17:29+09:00" 53 ["@context"]=> 54 string(41) "http://vocab.odpt.org/context_odpt.jsonld" 55 ["dct:valid"]=> 56 string(25) "2022-01-14T08:18:29+09:00" 57 ["odpt:delay"]=> 58 int(0) 59 ["owl:sameAs"]=> 60 string(29) "odpt.Train:Toei.Asakusa.729Tb" 61 ["odpt:railway"]=> 62 string(25) "odpt.Railway:Toei.Asakusa" 63 ["odpt:operator"]=> 64 string(18) "odpt.Operator:Toei" 65 ["odpt:toStation"]=> 66 string(35) "odpt.Station:Toei.Asakusa.Ningyocho" 67 ["odpt:trainType"]=> 68 string(25) "odpt.TrainType:Toei.Local" 69 ["odpt:trainOwner"]=> 70 string(18) "odpt.Operator:Toei" 71 ["odpt:fromStation"]=> 72 string(36) "odpt.Station:Toei.Asakusa.Nihombashi" 73 ["odpt:trainNumber"]=> 74 string(5) "729Tb" 75 ["odpt:originStation"]=> 76 array(1) { 77 [0]=> 78 string(37) "odpt.Station:Toei.Asakusa.NishiMagome" 79 } 80 ["odpt:railDirection"]=> 81 string(29) "odpt.RailDirection:Northbound" 82 ["odpt:destinationStation"]=> 83 array(1) { 84 [0]=> 85 string(39) "odpt.Station:Keisei.Main.KeiseiTakasago" 86 } 87 } 88 [2]=> 89 array(17) { 90 ["@id"]=> 91 string(45) "urn:uuid:ff2bba55-6eba-4e91-9b09-3c0d1c3765d9" 92 ["@type"]=> 93 string(10) "odpt:Train" 94 ["dc:date"]=> 95 string(25) "2022-01-14T08:17:29+09:00" 96 ["@context"]=> 97 string(41) "http://vocab.odpt.org/context_odpt.jsonld" 98 ["dct:valid"]=> 99 string(25) "2022-01-14T08:18:29+09:00" 100 ["odpt:delay"]=> 101 int(0) 102 ["owl:sameAs"]=> 103 string(28) "odpt.Train:Toei.Asakusa.853K" 104 ["odpt:railway"]=> 105 string(25) "odpt.Railway:Toei.Asakusa" 106 ["odpt:operator"]=> 107 string(18) "odpt.Operator:Toei" 108 ["odpt:toStation"]=> 109 NULL 110 ["odpt:trainType"]=> 111 string(25) "odpt.TrainType:Toei.Local" 112 ["odpt:trainOwner"]=> 113 string(20) "odpt.Operator:Keisei" 114 ["odpt:fromStation"]=> 115 string(37) "odpt.Station:Toei.Asakusa.NishiMagome" 116 ["odpt:trainNumber"]=> 117 string(4) "853K" 118 ["odpt:originStation"]=> 119 array(1) { 120 [0]=> 121 string(37) "odpt.Station:Toei.Asakusa.NishiMagome" 122 } 123 ["odpt:railDirection"]=> 124 string(29) "odpt.RailDirection:Northbound" 125 ["odpt:destinationStation"]=> 126 array(1) { 127 [0]=> 128 string(40) "odpt.Station:Hokuso.Hokuso.ImbaNihonIdai" 129 } 130 } 131 [3]=> 132 array(17) { 133 ["@id"]=> 134 string(45) "urn:uuid:4be298d8-44c7-4b87-a1f0-fff845f6fc84" 135 ["@type"]=> 136 string(10) "odpt:Train" 137 ["dc:date"]=> 138 string(25) "2022-01-14T08:17:29+09:00" 139 ["@context"]=> 140 string(41) "http://vocab.odpt.org/context_odpt.jsonld" 141 ["dct:valid"]=> 142 string(25) "2022-01-14T08:18:29+09:00" 143 ["odpt:delay"]=> 144 int(0) 145 ["owl:sameAs"]=> 146 string(28) "odpt.Train:Toei.Asakusa.821T" 147 ["odpt:railway"]=> 148 string(25) "odpt.Railway:Toei.Asakusa" 149 ["odpt:operator"]=> 150 string(18) "odpt.Operator:Toei" 151 ["odpt:toStation"]=> 152 NULL 153 ["odpt:trainType"]=> 154 string(25) "odpt.TrainType:Toei.Local" 155 ["odpt:trainOwner"]=> 156 string(18) "odpt.Operator:Toei" 157 ["odpt:fromStation"]=> 158 string(37) "odpt.Station:Toei.Asakusa.NishiMagome" 159 ["odpt:trainNumber"]=> 160 string(4) "821T" 161 ["odpt:originStation"]=> 162 array(1) { 163 [0]=> 164 string(37) "odpt.Station:Toei.Asakusa.NishiMagome" 165 } 166 ["odpt:railDirection"]=> 167 string(29) "odpt.RailDirection:Northbound" 168 ["odpt:destinationStation"]=> 169 array(1) { 170 [0]=> 171 string(33) "odpt.Station:Toei.Asakusa.Oshiage" 172 } 173 } 174

疑問点

ここまでは取得できたものの、そこから詳細な値(toStationfromStation)をどのように取り出せば良いのか分かりません。

補足情報(FW/ツールのバージョンなど)

質問の仕方がまだ慣れていないので誤っているかもしれません。
その場合はご指摘ください。
できるだけ早く訂正いたします。
どうかご回答よろしくお願いします。

※一部、個人情報の保護のため、隠している箇所がございます。(APIキー)
ご了承ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHP

1$data = []; 2foreach($json_arr as $value){ 3 $data[] = ['toStation' => $value['odpt:toStation'], 'fromStation' => $value['odpt:fromStation']]; 4} 5 6vardump($data);

みたいな感じじゃダメなんですか? 配列まで取れてるんだから、あとはforeachで回して取るだけだと思いますが。データが取れてるのであればAPIの使い方としては間違ってないように見えます。

PHPの経験が多いということなので、なんとなくこういう回答をお望みじゃない気もしているのですが、そうであれば具体的にどのようにデータを取りたいのか?を質問文に追記してください。

投稿2022/01/14 03:26

AbeTakashi

総合スコア4537

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

henupyo107

2022/01/16 10:57

ありがとうございます。 いただいたコードを元に、考えてみます。 >そうであれば具体的にどのようにデータを取りたいのか? 再び疑問点にぶつかり、わからなければ新たに質問させてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問