为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
炎炎设计 2023-07-30 13:58:55
我有一个数组,我正在使用 来检查数组中是否存在值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;}
查看完整描述

3 回答

?
开满天机

TA贡献1786条经验 获得超12个赞

要直接执行此操作,您需要循环数组。


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]。


查看完整回答
反对 回复 2023-07-30
?
守候你守候我

TA贡献1802条经验 获得超10个赞

对于 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'));


查看完整回答
反对 回复 2023-07-30
?
手掌心

TA贡献1942条经验 获得超3个赞

您还可以通过 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';

};


查看完整回答
反对 回复 2023-07-30
  • 3 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信