PHP和JSON问题

时间:2017-06-19 00:44:26

标签: php arrays json ajax echo

我有一个看起来像这样的JSON文件(data.json) - >

{
    "level0": [

        {"name": "brandon", "job": "web dev"}, 
        {"name": "karigan", "job": "chef"}
    ],

    "level1": [ 
        {"name": "steve", "job": "father"},
        {"name": "renee", "job": "mother"}

    ]
}

我有一个看起来像这样的HTML页面(index.html) - >

<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>


    <script type = "text/javascript">
      function myAjax () {
        $.ajax( { type : 'POST',
          data : { },
          url  : 'printJSON.php',              // <=== CALL THE PHP FUNCTION HERE.
          success: function ( data ) {
            console.log(data);               // <=== VALUE RETURNED FROM FUNCTION.
          },
          error: function ( xhr ) {
            alert( "error" );
          }
        });
      }
    </script>


  </head>

  <body>
  <button onclick="myAjax()">Click here</button> <!-- BUTTON CALL PHP FUNCTION -->
  </body>
</html>

这只是一个按钮,点击后,利用AJAX调用以下文件中的PHP函数(printJSON.php) - &gt;

<?php

    function printJSON()
    {
        $str = file_get_contents('data.json');
        $json = json_decode($str, true);
        echo $json["level0"][0];
    }

    printJSON();

?>

现在,我已经研究了几个小时了......我仍然无法理解如何操作它以便从这个JSON对象中打印出我想要的内容。例如,这里我试图只显示level0的第一个元素,但我没有运气。如果有人能向我解释我做错了什么以及如何访问这个JSON对象的任何部分,我将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:2)

当你第一次处理一个新的json字符串时,最好用这个简单的代码来看看它在PHP中的样子

$s = '{
    "level0": [

        {"name": "brandon", "job": "web dev"}, 
        {"name": "karigan", "job": "chef"}
    ],

    "level1": [ 
        {"name": "steve", "job": "father"},
        {"name": "renee", "job": "mother"}

    ]
}';

$json = json_decode($s,true);

print_r($json);

结果

Array
(
    [level0] => Array
        (
            [0] => Array
                (
                    [name] => brandon
                    [job] => web dev
                )

            [1] => Array
                (
                    [name] => karigan
                    [job] => chef
                )

        )

    [level1] => Array
        (
            [0] => Array
                (
                    [name] => steve
                    [job] => father
                )

            [1] => Array
                (
                    [name] => renee
                    [job] => mother
                )

        )

现在你可以看到你有一个包含子数组的数组,每个子数组都包含一个子关联数组。所以你会从中选择项目

echo $json['level0'][0]['name'];
echo $json['level0'][0]['job'];