Php 我可以通过Id获取特定的JSON值吗?
我想从下面的JSON输出相应的日期typeId:11。 typeId的顺序总是不同的,因此它并不总是有效的,例如,总是寻址第二个值Php 我可以通过Id获取特定的JSON值吗?,php,json,Php,Json,我想从下面的JSON输出相应的日期typeId:11。 typeId的顺序总是不同的,因此它并不总是有效的,例如,总是寻址第二个值 { "page": 1, "totalsCount": 1, "isLastPage": true, "lastPageNumber": 1, "firstOnPage": 1, "lastOnPage
{
"page": 1,
"totalsCount": 1,
"isLastPage": true,
"lastPageNumber": 1,
"firstOnPage": 1,
"lastOnPage": 1,
"itemsPerPage": 50,
"entries": [
{
"id": 60132,
"statusName": "GIT",
"dates": [
{
"orderId": 60132,
"typeId": 7,
"date": "2021-06-03T00:00:00+02:00"
},
{
"orderId": 60132,
"typeId": 11,
"date": "2021-05-28T00:00:00+02:00"
},
{
"orderId": 60132,
"typeId": 16,
"date": "2021-05-27T20:20:28+02:00"
},
{
"orderId": 60132,
"typeId": 2,
"date": "2021-05-27T20:19:21+02:00"
},
{
"orderId": 60132,
"typeId": 4,
"date": "2021-06-03T15:16:14+02:00"
}
]
}
]
}
就我目前的方法而言,我没有得到任何结果:
$json = file_get_contents($orders);
$arr = json_decode($orders);
foreach($arr->entries as $order => $value) {
echo '<th scope="row">' . $value->dates->[typeId='11'].date . '</th>';
}
$json=file\u get\u contents($orders);
$arr=json_解码($orders);
foreach($arr->entries as$order=>$value){
回显“.$value->dates->[typeId='11'].date.”;
}
我的错误在哪里?对于这种情况,我通常编写如下简单函数:
function getDate(array $dates, $typeId) {
foreach ($dates as $date) {
if ($date['typeId'] === $typeId) {
return $date;
}
}
return null;
}
因为
dates
是一个数组,您必须通过typeId
迭代并过滤出适当的元素
大概是这样的:
function getDate(array $dates, $typeId) {
foreach ($dates as $date) {
if ($date['typeId'] === $typeId) {
return $date;
}
}
return null;
}
dates.filter({typeId})=>typeId==11.shift().date
您可以使用:
工作这样的数组或对象无法获取值。您必须反复查看日期才能找到正确的属性What is$value?我会考虑复习一些以前的问题,关于如何解析或迭代JSON数组。抱歉,我已经把信息添加到这个问题了。看起来不错,但实际上它对我不起作用。我的代码:更新,谢谢,你让它工作!但我的代码中有一个小问题:条目[0]只按第一顺序显示值。因此,第二份订单没有显示交货日期。你能按数量升序显示条目吗?条目[0]、条目[1]、条目[2]。。等等?很高兴它能工作!这回答了“我可以通过Id获得特定的JSON值吗?”。您的后续问题“按数量升序显示条目”应作为一个新问题发布,并尽最大努力解决您的问题以及您在解决问题时遇到的任何问题。嗯。。。这显然是一个与PHP相关的问题,因此这不是PHP的答案。
$obj = json_decode($json);
foreach($obj->entries[0]->dates as $order => $value) {
if($value->typeId == 11) echo '<th scope="row">' . $value->date . '</th>';
}