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

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

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

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

PHP

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

Q&A

解決済

3回答

3703閲覧

外部ファイルの文字を読込、変数に格納させる方法

kashim

総合スコア38

JSON

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

PHP

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

0グッド

0クリップ

投稿2017/07/18 06:40

編集2017/07/18 08:49

外部ファイル test.jsonに

JSON

1[{"id":"1"}] 2```上記のような内容があり、 3それをdisplay.phpの方で利用したいのですがどうすればいいでしょうか。 4 5```PHP 6//display.php 7 8//このコードでは動作しませんでした。 9$test = file_get_contents('test.json'); 10print_r(json_decode($test));

よろしくお願いいたします。


追記
コード1:

PHP

1<?php 2ini_set('display_errors', 1); 3error_reporting(E_ALL); 4foreach(json_decode(file_get_contents('test.json'), true) as $key => $val) { 5 echo $key.' => '.var_export($val, true).PHP_EOL; 6} 7?>

結果1:
Warning: Invalid argument supplied for foreach() in /var/www/html/test2.php on line 5

やはり文字列がJsonとして、認識されないです…

コード2:

PHP

1$test = file_get_contents('test.json'); 2var_dump($test);

結果2:
string(17) "[{"id":"1"}] "

上記結果が返ってきています

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

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

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

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

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

guest

回答3

0

まず、開発時は必ず

PHP

1ini_set('display_errors', 1); 2error_reporting(E_ALL);

をファイルの先頭に書いて、エラーを表示させるようにして、質問する際はエラー内容を提示してください。
*エラー文で検索するだけで多くの問題が解決することも多いです。

エラー内容がわからないので勘ですが、
外部ファイルが test.jsonなのであれば、

PHP

1//このコードでは動作しませんでした。 2$test = file_get_contents('output.json');

PHP

1//このコードでは動作しませんでした。 2$test = file_get_contents('test.json');

となるかと思いますがいかがでしょうか?

投稿2017/07/18 07:00

tanat

総合スコア18713

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

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

kashim

2017/07/18 07:09

すみません、質問が間違えてました。 おっしゃる通り、$test = file_get_contents('test.json');でした。 ただし、まだ変数として格納できておらず、 ini_set('display_errors', 1); error_reporting(E_ALL); をしてもエラーはありませんでした。
tanat

2017/07/18 07:17

> ただし、まだ変数として格納できておらず、 というのはどういう状態を指しますか? $test = file_get_contents('test.json'); var_dump($test); としてみて結果を追記してください。
guest

0

print_rを使ってるなら、json_decodeが配列で返ってくるとわかってるワケですよね?

PHP

1$dataArray = json_decode($test, true);

で、普通に配列として扱えばいいだけでは?

PHP

1foreach(json_decode(file_get_contents('test.json'), true) as $key => $val) { 2 echo $key.' => '.var_export($val, true).PHP_EOL; 3}

とかで。

投稿2017/07/18 06:54

編集2017/07/18 07:20
kunai

総合スコア5405

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

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

kashim

2017/07/18 07:12

json_decodeが機能しないのです。。。 外部ファイルに入ってるのはただの文字列なので、 それを$testに格納しても、配列として認識されていない為、 json_decodeが動作しないのだと思います
kunai

2017/07/18 07:19

あぁ、すみません。第二引数にtrueを指定しないとダメでしたね。 回答文のソースを修正します。
guest

0

自己解決

すみません、解決いたしました。
大変ご迷惑をおかけしました。

JsonのファイルがUTF-8ですっかり安心していたのですが
UTF-8(BOMなし)の方ではなく、BOMありの方で保存していたため、
エラーとなっていたことが分かりました。

皆様ありがとうございました。

投稿2017/07/18 08:55

kashim

総合スコア38

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問