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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

Q&A

解決済

1回答

1857閲覧

都道府県を配列にセットして表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

0グッド

0クリップ

投稿2020/05/10 02:01

jsonから読み取ったファイルを下記のようにphpの配列にセットしたい

[ "都道府県名A" => [市町村名1, 市町村名2...], "都道府県名B" => [市町村名3, 市町村名4...], ... ]

現在のコード

$jsondata = file_get_contents('./sample.json', true); $contents = json_decode($jsondata, true); $array = []; foreach( $contents[0] as $key => $val){ foreach($val as $key1 => $val1){ array_push($array,$val["name"]); array_push($array,$val["city"]); } } var_dump($array);

まだ途中なのは承知しているのですが、ここからどうやって作っていけばいいのかわからず困っております。
どなたか教えていただければ大変ありがたいと思います。

サンプルファイルが下記になります(長くてすみません)。

[{ "01": { "id": "01", "name": "北海道", "short": "北海道", "kana": "ホッカイドウ", "en": "hokkaido", "city":[ {"citycode":"0010001","city":"札幌市中央区"}, {"citycode":"0010002","city":"札幌市北区"}, {"citycode":"0010003","city":"札幌市東区"}, {"citycode":"0010004","city":"札幌市白石区"}, {"citycode":"0010005","city":"札幌市豊平区"}, {"citycode":"0010006","city":"札幌市南区"}, {"citycode":"0010007","city":"札幌市西区"}, {"citycode":"0010008","city":"札幌市厚別区"}, {"citycode":"0010009","city":"札幌市手稲区"}, {"citycode":"0010010","city":"札幌市清田区"}, {"citycode":"0010011","city":"函館市"}, {"citycode":"0010012","city":"小樽市"}, {"citycode":"0010013","city":"旭川市"}, {"citycode":"0010014","city":"室蘭市"}, {"citycode":"0010015","city":"釧路市"}, {"citycode":"0010016","city":"帯広市"}, {"citycode":"0010017","city":"北見市"}, {"citycode":"0010018","city":"夕張市"}, {"citycode":"0010019","city":"岩見沢市"}, {"citycode":"0010020","city":"網走市"}, {"citycode":"0010021","city":"留萌市"}, {"citycode":"0010022","city":"苫小牧市"}, {"citycode":"0010023","city":"稚内市"}, {"citycode":"0010024","city":"美唄市"}, {"citycode":"0010025","city":"芦別市"}, {"citycode":"0010026","city":"江別市"}, {"citycode":"0010027","city":"赤平市"}, {"citycode":"0010028","city":"紋別市"}, {"citycode":"0010029","city":"士別市"}, {"citycode":"0010030","city":"名寄市"}, {"citycode":"0010031","city":"三笠市"}, {"citycode":"0010032","city":"根室市"}, {"citycode":"0010089","city":"新冠郡"}, {"citycode":"0010090","city":"浦河郡"}, {"citycode":"0010091","city":"様似郡"}, {"citycode":"0010092","city":"幌泉郡"}, {"citycode":"0010093","city":"日高郡"}, {"citycode":"0010094","city":"河東郡"}, {"citycode":"0010095","city":"河西郡"}, {"citycode":"0010096","city":"広尾郡"}, {"citycode":"0010097","city":"足寄郡"}, {"citycode":"0010098","city":"十勝郡"}, {"citycode":"0010099","city":"釧路郡"}, {"citycode":"0010100","city":"厚岸郡"}, {"citycode":"0010101","city":"川上郡"}, {"citycode":"0010102","city":"阿寒郡"}, {"citycode":"0010103","city":"白糠郡"}, {"citycode":"0010104","city":"野付郡"}, {"citycode":"0010105","city":"標津郡"}, {"citycode":"0010106","city":"目梨郡"} ] }, "02": { "id": "02", "name": "青森県", "short": "青森", "kana": "アオモリケン", "en": "aomori", "city":[ {"citycode":"0020001","city":"青森市"}, {"citycode":"0020002","city":"弘前市"}, {"citycode":"0020003","city":"八戸市"}, {"citycode":"0020004","city":"黒石市"}, {"citycode":"0020005","city":"五所川原市"}, {"citycode":"0020006","city":"十和田市"}, {"citycode":"0020007","city":"三沢市"}, {"citycode":"0020008","city":"むつ市"}, {"citycode":"0020009","city":"つがる市"}, {"citycode":"0020010","city":"平川市"}, {"citycode":"0020011","city":"東津軽郡"}, {"citycode":"0020012","city":"西津軽郡"}, {"citycode":"0020013","city":"中津軽郡"}, {"citycode":"0020014","city":"南津軽郡"}, {"citycode":"0020015","city":"北津軽郡"}, {"citycode":"0020016","city":"上北郡"}, {"citycode":"0020017","city":"下北郡"}, {"citycode":"0020018","city":"三戸郡"} ] }, "03": { "id": "03", "name": "岩手県", "short": "岩手", "kana": "イワテケン", "en": "iwate", "city":[ {"citycode":"0030001","city":"盛岡市"}, {"citycode":"0030002","city":"宮古市"}, {"citycode":"0030003","city":"大船渡市"}, {"citycode":"0030004","city":"花巻市"}, {"citycode":"0030005","city":"北上市"}, {"citycode":"0030006","city":"久慈市"}, {"citycode":"0030007","city":"遠野市"}, {"citycode":"0030008","city":"一関市"}, {"citycode":"0030009","city":"陸前高田市"}, {"citycode":"0030010","city":"釜石市"}, {"citycode":"0030011","city":"二戸市"}, {"citycode":"0030012","city":"八幡平市"}, {"citycode":"0030013","city":"奥州市"}, {"citycode":"0030014","city":"滝沢市"}, {"citycode":"0030015","city":"岩手郡"}, {"citycode":"0030016","city":"紫波郡"}, {"citycode":"0030017","city":"和賀郡"}, {"citycode":"0030018","city":"胆沢郡"}, {"citycode":"0030019","city":"西磐井郡"}, {"citycode":"0030020","city":"気仙郡"}, {"citycode":"0030021","city":"上閉伊郡"}, {"citycode":"0030022","city":"下閉伊郡"}, {"citycode":"0030023","city":"九戸郡"}, {"citycode":"0030024","city":"二戸郡"} ] }, "04": { "id": "04", "name": "宮城県", "short": "宮城", "kana": "ミヤギケン", "en": "miyagi", "city":[ {"citycode":"0040001","city":"仙台市青葉区"}, {"citycode":"0040002","city":"仙台市宮城野区"}, {"citycode":"0040003","city":"仙台市若林区"}, {"citycode":"0040004","city":"仙台市泉区"}, {"citycode":"0040005","city":"石巻市"}, {"citycode":"0040006","city":"塩竈市"}, {"citycode":"0040007","city":"気仙沼市"}, {"citycode":"0040008","city":"白石市"}, {"citycode":"0040009","city":"名取市"}, {"citycode":"0040010","city":"角田市"}, {"citycode":"0040011","city":"多賀城市"}, {"citycode":"0040012","city":"岩沼市"}, {"citycode":"0040013","city":"登米市"}, {"citycode":"0040014","city":"栗原市"}, {"citycode":"0040015","city":"東松島市"}, {"citycode":"0040016","city":"大崎市"}, {"citycode":"0040017","city":"富谷市"}, {"citycode":"0040018","city":"刈田郡"}, {"citycode":"0040019","city":"柴田郡"}, {"citycode":"0040020","city":"伊具郡"}, {"citycode":"0040021","city":"亘理郡"}, {"citycode":"0040022","city":"宮城郡"}, {"citycode":"0040023","city":"黒川郡"}, {"citycode":"0040024","city":"加美郡"}, {"citycode":"0040025","city":"遠田郡"}, {"citycode":"0040026","city":"牡鹿郡"}, {"citycode":"0040027","city":"本吉郡"} ] } }]

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

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

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

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

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

m.ts10806

2020/05/10 02:08

どのように表示したいのでしょうか。 単にjson_decode()の結果をvar_dump()ではダメなのでしょうか。
退会済みユーザー

退会済みユーザー

2020/05/10 02:12

はい、全部読み取ってしまうと'id'や'kana'まで表示してしまいます。 [ "北海道" => [札幌市中央区, 札幌市北区...], "青森県" => [青森市, 弘前市...], ... ] のように表示させたいです。
Take_it

2020/05/10 02:27

jeson_decodeしたものをforeachで処理すればいいのでは。
guest

回答1

0

ベストアンサー

こうですかね。

php

1$jsonarr = json_decode($json); 2$prefdata = []; 3 4foreach($jsonarr[0] as $r){ 5 foreach($r->city as $city){ 6 $prefdata[$r->name][] = $city->city; 7 } 8} 9var_dump($prefdata);

オブジェクトになるとstdClassになるのでアローでアクセスします。

※json_decode()の第二引数trueにしてる場合はアローじゃなくて連想配列でアクセスなので、提示したコードを参考に組んでみてください。おそらくロジックはほぼそのまま使えるはず。

投稿2020/05/10 02:53

編集2020/05/10 02:57
m.ts10806

総合スコア80875

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

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

m.ts10806

2020/05/10 02:55

あぁ。第二引数trueにしてたか・・・ まぁ参考までに。応用は出来るので
退会済みユーザー

退会済みユーザー

2020/05/10 03:54

ありがとうございます! ですが array(106)やstring(9) この表記を消すにはどのようにしたらよろしいでしょうか?
m.ts10806

2020/05/10 04:23

var_dump()の仕様です。 そもそもvar_dump()は「変数がどういう情報を保持しているか」を展開しているものであって、「画面表示する」ためのものではありません。 array(106)は「型がarrayで106個の要素を保持している」という意味で、 string(9)は「型がstringで9文字(正確にはバイトかな)の情報を保持している」という意味です。 「画面表示したい」ならechoなりprintで対応してください。
退会済みユーザー

退会済みユーザー

2020/05/10 04:28

承知しました! ご教授ありがとうございます!
m.ts10806

2020/05/10 04:30

・・細かいですがこういうケースは「ご教示」かと思います。 別に師匠弟子の関係があって伝承のような何かを授けたわけではないので。
退会済みユーザー

退会済みユーザー

2020/05/10 04:50

すみません、そうですね、、 失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問