PHP - 检查数组中是否存在值但仅针对特定键

我有一个数组,我正在使用 来检查数组中是否存在值in_array()。但是,我只想检查密钥ID而不是date。


$arr = ({

    "ID":"10",

    "date":"04\/22\/20"

},

{

    "ID":"20",

    "date":"05\/25\/20"

},

{

    "ID":"32",

    "date":"07\/13\/20"

});

因此,在此示例中,不应满足条件,因为25存在于date,但不存在于ID。


if (in_array("25", $arr)) {

    return true;

}


炎炎设计
浏览 91回答 3
3回答

开满天机

要直接执行此操作,您需要循环数组。function hasId($arr, $id) {    foreach ($arr as $value) {        if ($value['ID'] == $id) return true;    }    return false;}如果您需要对多个 ID 执行此操作,最好将数组转换为映射并使用isset.$map = array();foreach ($arr as $value) {    $map[$value['ID']] = $value;    // or $map[$value['ID']] = $value['date'];}if (isset($map["25"])) {    ...}这还允许您使用 id 通过 id 廉价地查找地图中的任何值$map[$key]。

守候你守候我

对于 PHP 版本(>= 5.5.0),有一个简单的方法可以做到这一点$arr = ({    "ID":"10",    "date":"04\/22\/20"},{    "ID":"20",    "date":"05\/25\/20"},{    "ID":"32",    "date":"07\/13\/20"});$searched_value = array_search('25', array_column($arr, 'ID'));

手掌心

您还可以通过 array_filter 函数检查它:$searchId = '25';$arr = [[    "ID" => "10",    "date" => "04\/22\/20"],[    "ID" => "25",    "date" => "05\/25\/20"],[    "ID" => "32",    "date" => "07\/13\/20"]];$items = array_filter($arr, function ($item) use ($searchId) {     return $item['ID'] === $searchId;});if (count($items) > 0) {   echo 'found';};
打开App,查看更多内容
随时随地看视频慕课网APP