bugfix> php > 投稿

私は次を持っていますJSON コード:

{
   "google.com": {
        "clicks": 23,
        "browsers": {
            "Chrome": 19,
            "Mozilla": 2,
            "Safari": 1
        }
    },
    "mcnitro.net": {
        "clicks": 87,
        "browsers": {
            "Chrome": 19,
            "Mozilla": 2,
            "Safari": 1
        }
    }
}

そして、ドキュメントページにアレイの名前とその子を印刷するよう努めています。 これまでのところ、私は次のことを試しましたPHP コード:

<?php
    header("Content-type: text/javascript");
    $jsonString = file_get_contents('stats.json');
    $data = json_decode($jsonString, true);
    foreach($data->children() as $domain) {
        echo $data[$domain];
        foreach($data[$domain] as $value) {
            echo $value['clicks'];
        }
    }
?>

しかし、私は error_log で問題に直面しています :

PHP Fatal error:  Call to a member function children() on array in /home/gamin167/public_html/ads/engine/300x250/gen.js.php on line 5

求められた結果は、「google.com」と「mcnitro.net」、および「clicks」プロパティを印刷することでした。

どんなヒントやアドバイスも大歓迎です!前もって感謝します!

回答 2 件
  • true で文字列を配列にデコードします  それでも、あなたはそれをオブジェクトとして試して使用するようです。
    また、2回ループする必要もありません。

    foreach($data as $key => $domain) {
        echo $key . "\n";
        echo $domain['clicks'] . "\n\n";
    }
    
    

    出力:

    google.com
    23
    mcnitro.net
    87
    
    

    https://3v4l.org/D7FCY

  • ->children() は使用できません 。 $data  JSONデータを含む配列であり、 foreach を使用できます   key を取得する  および valueforeach ($data as $key => $value) のような 。

    ドメイン名を取得するには、次のようにします。

    <?php
        header("Content-type: text/javascript");
        $jsonString = file_get_contents('stats.json');
        $data = json_decode($jsonString, true);
        foreach($data as $domain => $value) {
            echo $value['clicks'];
        }
    ?>
    
    

あなたの答え