如何使用php通过url参数访问单个json帖子?

时间:2019-07-16 07:07:26

标签: php json

我目前在尝试使用不带任何框架或数据库的PHP创建RESTFUL API时遇到此问题。我使用PHP解析了JSON数据,但是在尝试根据输入到URL的查询参数来访问特定帖子时遇到了麻烦。

这是我的php代码:

<?php 
header('Access-Control-Allow-Origin: *'); 
header ('Content-Type: application/json');
$jsondata = file_get_contents("credits.json");  
print_r(json_encode($jsondata));
?>

这是我的json数据:

{
"credits": [
      {
        "creditId": 123,
        "id": 1,
        "client": "Peter",
      },
      {
        "creditId": 789,
        "id": 2,
        "client": "Jonas",
      }
   ]
}

例如:如果我的URL像这样:http://localhost:5041/credits/,则键入http://localhost:5041/credits/?id=1将仅访问具有特定ID的单个帖子。

1 个答案:

答案 0 :(得分:0)

$data = '{
"credits": [
      {
        "creditId": 123,
        "id": 1,
        "client": "Peter"
      },
      {
        "creditId": 789,
        "id": 2,
        "client": "Jonas"
      }
   ]
}';

$data = json_decode($data,true);

$row  = array_keys(array_combine(array_keys($data['credits']), array_column($data['credits'], 'id')),$_GET['id']);

if(isset($_GET['id'])){
    print_r($data['credits'][$row[0]]);
}
else{
    print_r($data);
}

第一步是将json解码为数组。然后,使用php数组函数,我在您的多维数组中搜索使用$_GET['id']从url中接收到的值,并仅打印具有此id的块,否则打印整个数组。

就像您要求的那样,如果您不输入任何ID,则url将适用于所有结果;如果您在url中设置了ID,则将适用于属于该ID的特定结果。