我目前在尝试使用不带任何框架或数据库的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的单个帖子。
答案 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的特定结果。