Php 我可以通过Id获取特定的JSON值吗?

Php 我可以通过Id获取特定的JSON值吗?,php,json,Php,Json,我想从下面的JSON输出相应的日期typeId:11。 typeId的顺序总是不同的,因此它并不总是有效的,例如,总是寻址第二个值 { "page": 1, "totalsCount": 1, "isLastPage": true, "lastPageNumber": 1, "firstOnPage": 1, "lastOnPage

我想从下面的JSON输出相应的日期typeId:11。 typeId的顺序总是不同的,因此它并不总是有效的,例如,总是寻址第二个值

    {
    "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>';
}