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

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

ただいまの
回答率

90.33%

  • PHP

    21353questions

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

  • JSON

    1236questions

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

phpでjsonデータを表示させる

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 212

arp

score 1

 すでに取得したjson形式のデータをphpを利用して表示させたい

ここに質問の内容を詳しく書いてください。
phpを使って取得したjson形式のデータを表示させようとしています。
しかし、jsonにまだ不慣れで値へのアクセスの仕方がわかりません。
現在扱っているjsonの形と試したコードを貼り付けます。

 試したコード

<!DOCTYPE html>
<html lang="ja" dir="ltr">
<head>
    <meta charset="utf-8">
    <title>test</title>
</head>
<body>
<?php
/**
 * Created by PhpStorm.
 * User: 
 * Date: 
 * Time: 
 */
$url = "./test.json";
$json = file_get_contents($url);
$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$arr = json_decode($json, true);

print("<table border=1>");

foreach ($arr as $elm) {
    print("<tr>");
    print("<td>" . $elm['trends']['name'] . "</td>");
    print("<td>" . $elm['trends']['url'] . "</td>");
    print("</tr>");
}
print("</table>");
?>
</body>
</html>

扱うデータ

[
  {"trends":
   [
    {"name":"\u5EA6","url":"http:\/\/search?","promoted_content":null,"query":"%E5%BA%A6","volume":10583
    },
    {"name":"aaa","url":"http:\/\/bbb","promoted_content":null,"query":"ccc","volume":12345
    },
...
    {"name":"AAA","url":"http:\/\/BBB","promoted_content":null,"query":"CCC","volume":67890
    }
  ],
    "as_of":"2018-07-06T08:17:55Z","created_at":"2018-07-06T08:09:27Z","locations":
  [
    {"name":"Kitakyushu","woeid":1110809
    }
  ]
  }
]

 試したこと

このまま実行して
Notice: Undefined index: name in I:\php_test\test.php on line 24

Notice: Undefined index: url in I:\php_test\test.php on line 25
と言われました。

 補足情報

jsonデータは適当に短くしています。“name”や“url”をforeachで表示させる方法を知りたいです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+3

<?php
ini_set('display_errors', true);
error_reporting(E_ALL);

function h($string)
{
    return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}

$url = "./test.json";
$json = file_get_contents($url);

// 不要JSONの仕様上UTF-8であることは明らか
//$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$arr = json_decode($json, true);

//var_dump($arr);
?>
<!DOCTYPE html>
<html lang="ja" dir="ltr">
    <head>
        <meta charset="utf-8">
        <title>test</title>
    </head>
    <body>
        <table>
            <?php foreach ($arr[0]['trends'] as $item) : ?>
                <tr>
                    <td><?= h($item['name']) ?></td>
                    <td><?= h($item['url']) ?></td>
                </tr>
            <?php endforeach; ?>
        </table>
    </body>
</html>

var_dump() 指南 (初学者・初心者用)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/08 16:40

    大方解決しました!ありがとうございます。
    まだ第一段階なのでまた質問を投稿することもあるかと思いますがその時はまた質問を見に来てくれるとありがたいです。

    キャンセル

同じタグがついた質問を見る

  • PHP

    21353questions

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

  • JSON

    1236questions

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