- ベストアンサー
PHP関数化:jsonファイルを読み込み連想配列に変換する
- PHP関数化を試みる際、jsonファイルを読み込み連想配列に変換する方法についてわからない。
- 初心者なので基本的なことかもしれないが、ファイルの存在を確認し、jsonデータを読み込んで連想配列に変換したい。
- 特定の要素にアクセスするためには、連想配列であることを考慮に入れる必要がある。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
関数にするというのなら、関数の処理結果を返すようにしたらいいのではないでしょうか。 こんなイメージ。動作確認はしていませんが、方向性はそれでいいはず。 function Array_trans_json($file_path) { $json = file_get_contents($file_path); //jsonデータを読み込む $json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); //文字化けを防ぐ //$json_arr["piyo"][control_num];でアクセスできる $json_arr = json_decode($json, true); //jsonデータを連想配列に変換 return $json_arr; } $file_path = "./test.json"; if(file_exists($file_path)){ $json_arr = Array_trans_json($file_path);
その他の回答 (2)
- t_ohta
- ベストアンサー率38% (5238/13705)
No.1 の方が書かれている通り、関数は returnで 値を返すのが基本なので、 function Array_trans_json($file_path,$json_arr){ は function Array_trans_json($file_path){ とし $json_arr = json_decode($json,true); //jsonデータを連想配列に変換 は return json_decode($json,true); //jsonデータを連想配列に変換 とします。 そして呼び出し側は $json_arr = Array_trans_json($file_path); とするのが正しい対処法です。 何らかの理由で戻り値として値を受け取るのでは無く、引数で変数を渡して中に入れてもらう必要があるのであれば、関数の定義で引数を参照渡しにする必要があります。 その場合は、 function Array_trans_json($file_path,&$json_arr){ とします。
- akauntook
- ベストアンサー率19% (295/1481)
私は、技術者向けって書いてあるのに、初心者です。と断りを入れるのは嫌いですが、たまたま気が向いたので回答します。 関数は、与えられた引数により、なにかを返すものです。 書式としては、 function 関数名(引数1,引数2,…){ 処理の記述 return 戻り値; } です。 phpに限ることではないですが、基本的に関数は、引数を変更しない。 二次関数とか、中学生のときにやったことと変わりません。 xの値が決まるとyが決まる。そんだけです。 この場合、xが引数でyが戻り値と等しくなるってことですね。 returnがないんで、その関数は何も値を返さない。 質問に書いてある認識の時点で間違いだとわかります。 >内容はjsonファイルを読みこみ連想配列に変換したいです。 概ねこの通りに書いてあると思います。 やりたいことを正しく書くなら jsonファイルのパスを引数にとり、ファイルの内容を配列で返す関数になります。 とりあえず、簡単にこんなところです。 『php ユーザー定義関数』等と検索することで、小学生レベルの算数を例にして説明しているサイトもあるんで、それ見ればわかるはずです。 phpは情報も多いので、かなり学習しやすいと思います。 何よりマニュアルが分かりやすい。 入門的なサイトをまずは一通り実例を自分で試して、さらにマニュアルで必要な関数を確認すれば、問題ないと思います。
お礼
ありがとうございます。