繁体   English   中英

Php,根据另一个键/值对获取键值?

[英]Php, get key value based on another key/value pair?

如何以 EndDate = 2019-05-31 为例进行搜索并获得对应的 Id 值?

{
    "Data": [{
        "Id": "xxx",
        "StartDate": "2017-06-01",
        "EndDate": "2018-05-31"
    }, {
        "Id": "af7fb21b-3477-4d87-a0dc-3780ef2b39dd",
        "StartDate": "2018-06-01",
        "EndDate": "2019-05-31"
    }]
}

使用 array_column 创建一个包含 "EndDate" => "Id" 对的数组。 如果您的密钥存在,那么您可以直接访问您的 ID。

<?php
$arrayKeyValue = array_column($array['Data'],'Id','EndDate');

echo $arrayKeyValue["2019-05-31"]; 
//af7fb21b-3477-4d87-a0dc-3780ef2b39dd
  • 首先,使用array_column过滤EndDate值。
  • 其次,您可以使用array_search来获取它的索引。
  • 第三,在原始数组中使用这个索引并访问Id键。

代码:

<?php

$index = array_search('2019-05-31',array_column($data['Data'],'EndDate'));

echo $data['Data'][$index]['Id'];

演示: https://3v4l.org/b4aAA

这是不使用特殊数组方法的基本方法。

$json = '[{
        "Id": "xxx",
        "StartDate": "2017-06-01",
        "EndDate": "2018-05-31"
    }, {
        "Id": "af7fb21b-3477-4d87-a0dc-3780ef2b39dd",
        "StartDate": "2018-06-01",
        "EndDate": "2019-05-31"
    },{
        "Id": "af7fb21b-3477-4d87-a0dc-3780ef2b49dd",
        "StartDate": "2018-09-12",
        "EndDate": "2018-06-30"
    }]';

  $data = json_decode($json,true);

  $enddate = '2019-05-31';

  foreach($data as $k => $v){
      if($v['EndDate'] == $enddate){
         $res[] = array(
             'Id' => $v['Id'],
             'StartDate' => $v['StartDate'],
             'EndDate' => $v['EndDate']
             );
      }

  }

  print_r($res[0]['Id']);  // af7fb21b-3477-4d87-a0dc-3780ef2b39dd

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM