如何通过解析url中的数组名称从JSON文件中获取数据

时间:2017-04-16 15:26:56

标签: php arrays json

我正在尝试从我的'data.json'文件中以json格式打印数据。使用我的php文件(alldata.php),我可以将所有数据(数组)打印出来。但我希望你帮助我的方法是如何获得特定的数组名称及其对象/内容。

我的alldata.php看起来像这样:

{

"players": [
    {
        "name": "Marcos Alonso",
        "position": "Left-Back",
        "nationality": "Spain",
        "marketValue": "9,000,000 €",
        "created": "2017-04-15 10:04:58"
    }],

"articles": [
{
    "author": "Stephen Walter",
    "title": "Disruptive stag party revellers thrown off plane at Manchester Airport",
    "url": "http://www.telegraph.co.uk/news/2017/04/15/disruptive-stag-party-revellers-thrown-plane-manchester-airport/",
    "publishedAt": "2017-04-15T09:25:10Z"
}],

land": [
{
    "state": "Somewhr",
    "found": "1889",
    "area": "6,812",
    "empl": "1,325",
    "ppl": "16,842"

}]
}

在php中,如何通过使用“alldata.php?search = players”等网址获取数据,例如“播放器”内容 这是一个代码示例....

//get content of the JSON API using file_get_contents()
$url = ('myJson.json');
$jsondata = file_get_contents($url);
//convert json object to php associative array
$data = json_decode($jsondata, true);

what do I do here to query the data.json file for a specific array?????

header('Content-Type: application/json; charset=UTF-8');
$json_string = json_encode($????????????, JSON_PRETTY_PRINT);
print $json_string;

由于

1 个答案:

答案 0 :(得分:0)

如果我理解你的意思,如果你的数组总是在同一棵树上,这个wilp可以帮助你访问数据:

<?php

error_reporting(E_ALL);
ini_set("display_errors", 1);

$array = array(

0 => array(
    "players" => array(
    "name" =>  "Marcos Alonso",
    "position" =>  "Left-Back",
    "nationality" =>  "Spain",
    "marketValue" =>  "9,000,000 €",
    "created" =>  "2017-04-15 10:04:58"
    ),
    "articles" => array(
    "author" =>  "Stephen Walter",
    "title" =>  "Disruptive stag party revellers thrown off plane at Manchester Airport",
    "url" =>  "http://www.telegraph.co.uk/news/2017/04/15/",
    "publishedAt" =>  "2017-04-15T09:25:10Z"
    ),
    "land" => array(
    "state" =>  "Somewhr",
    "found" =>  "1889",
    "area" =>  "6,812",
    "empl" =>  "1,325",
    "ppl" =>  "16,842"
    )
),

1 => array(
    "players" => array(
    "name" =>  "Sebastian Vettel",
    "position" =>  "Driver",
    "nationality" =>  "Germany",
    "marketValue" =>  "9,000,000 €",
    "created" =>  "2013-03-15 11:04:52"
    ),
    "articles" => array(
    "author" =>  "Stephen Walter",
    "title" =>  "Disruptive stag party revellers thrown off plane at Manchester Airport",
    "url" =>  "http://www.telegraph.co.uk/news/2017/04/15/",
    "publishedAt" =>  "2017-04-15T09:25:10Z"
    ),
    "land" => array(
    "state" =>  "Somewhr",
    "found" =>  "1889",
    "area" =>  "6,812",
    "empl" =>  "1,325",
    "ppl" =>  "16,842"
    )
)

);
/* end of array */

$data1 = json_encode($array); /* just checking - not needed after that */
$data = json_decode($data1, true); /* just checking - not needed after that */

$needle = "articles"; /* should be $needle = $_GET['search']; and checked before use */

//print_r($data); /* just checking */

foreach($data as $value){ /* we access 1st level */
echo '** Needle is: '.$needle.' **<br/>';
    foreach($value[$needle] as $sub_key => $sub_data){ /* we access 2nd level */
echo $sub_key.'-->'.$sub_data.'<br/>'; }
}

?>

访问数据后,您可以轻松地按照自己的需要进行操作......