質問するログイン新規登録
JSON

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

PHP

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

Q&A

解決済

2回答

21700閲覧

php 多次元配列をJSONファイルに変換

shinoda

総合スコア75

JSON

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

PHP

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

0グッド

1クリップ

投稿2015/01/09 09:40

0

1

お世話になります。


$a= array(
"aaa" => array(
"aa" => "aaa",
"bb" => "bbb",
),
"bbb" => array(
"cc" => "ccc",
"dd" => "ddd",
)
);


上記のようなphpの配列をjsonファイルに書き出したいのですがうまく行かなくて困っています。
ご教授いただければ幸いです。
またjsonファイルに書きだすのにオブジェクトにして返したいのですがなにか方法はありますでしょうか?

宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

json_encodejson_decodeを利用すれば良いと思います。

lang

1<?php 2 3/* 4{"aaa":{"aa":"aaa","bb":"bbb"},"bbb":{"cc":"ccc","dd":"ddd"}} 5array.jsonはこのようなデータが入っている。 6*/ 7$file = 'array.json'; 8 9$json = file_get_contents($file); 10$array = json_decode($json, true); 11 12var_dump($array); 13/* 14var_dumpの結果 15array(2) { 16 ["aaa"]=> 17 array(2) { 18 ["aa"]=> 19 string(3) "aaa" 20 ["bb"]=> 21 string(3) "bbb" 22 } 23 ["bbb"]=> 24 array(2) { 25 ["cc"]=> 26 string(3) "ccc" 27 ["dd"]=> 28 string(3) "ddd" 29 } 30} 31*/ 32 33$array['aaa']['cc'] = 'ccc'; 34var_dump($array); 35/* 36var_dumpの結果 37array(2) { 38 ["aaa"]=> 39 array(3) { 40 ["aa"]=> 41 string(3) "aaa" 42 ["bb"]=> 43 string(3) "bbb" 44 ["cc"]=> 45 string(3) "ccc" 46 } 47 ["bbb"]=> 48 array(2) { 49 ["cc"]=> 50 string(3) "ccc" 51 ["dd"]=> 52 string(3) "ddd" 53 } 54} 55*/ 56 57file_put_contents($file, json_encode($array), LOCK_EX); 58/* 59{"aaa":{"aa":"aaa","bb":"bbb","cc":"ccc"},"bbb":{"cc":"ccc","dd":"ddd"}} 60array.jsonの中身 61*/

このような形で実装できると思います。参考にして下さい。

投稿2015/01/09 11:40

pikonori

総合スコア82

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

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

shinoda

2015/01/14 10:47

お世話になっております。 ご回答された方法でうまくいきました。 また私のやりたいことがうまくいっていないのでまた質問させていただくことがあると思いますがよろしくお願いいたします。
guest

0

一度、json_encodeを利用してJson形式に変換した後に、jsonファイルに書き出しすれば良いと思います。
http://php.net/manual/ja/function.json-encode.php

lang

1$a = array( 2 "aaa" => array( 3 "aa" => "aaa", 4 "bb" => "bbb", 5 ), 6 "bbb" => array( 7 "cc" => "ccc", 8 "dd" => "ddd", 9 ) 10); 11 12file_put_contents('array.json', json_encode($a));

こんな感じですかね。

またjsonファイルに書きだすのにオブジェクトにして返したいのですがなにか方法はありますでしょうか?
ちょっと質問の内容が分かりませんでしたので、詳しく教えて頂けると助かります。
書きだすのにオブジェクトで返すというのは、書き出したファイルをオブジェクトとして取得したいということですかね?

投稿2015/01/09 10:48

pikonori

総合スコア82

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

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

shinoda

2015/01/09 11:11

早速のご回答ありがとうございます。 ご回答された件は週明けに結果を報告致します。 全体的な流れを説明させていただきます。 あるjsonファイルをphpにデコードしパースをして連想配列に格納されたものをphpで配列の追加、削除、編集してその後またjsonファイルにエンコードするといった流れになります。 既存のjsonファイルはオブジェクトで書かれているのでその形を崩さず実装したいのです。 jsonファイルに関しては私が作ったものではなく勉強も兼ねてphp部分を私が作っています。 知識が乏しく質問も説明も伝わりづらいとは思いますが何卒ご教授お願い致します。
pikonori

2015/01/09 11:35

なるほどです。理解しました。 別で回答致します。
TaMaMhyu

2015/01/09 11:36

「オブジェクトで書かれている」と言うのがわからないと思います。JSONファイルの中身の具体例を出したほうがいいかと思います。
shinoda

2015/01/14 10:36

お世話になっております。 ご指摘されたようにjsonファイルの構造を書いておきます。 ************************************************* { "aaa": { "bbb":[ { "no":"1", "ccc":"c", "ddd":"d", "eee":"e", "fff":"緑区f南", "ggg":"g", "hhh":"h", "iii":"i", "jjj":[ {"kkk":"k","lll":"l"} ], ************************************************ 上記のような構造になっております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問