Home > Enterprise >  check if value is in array using 2 specific keys
check if value is in array using 2 specific keys

Time:12-01

I have an array like this:

$arr = ({
    "ID":"10",
    "date":"04\/22\/20"
},
{
    "ID":"20",
    "date":"05\/25\/20"
},
{
    "ID":"32",
    "date":"07\/13\/20"
});

I want to know if values on 2 different keys exist in the array, how can I Achieve that?

Example: if id is equal to 32 and date equals to 07/13/20, return true.

I've tried in_array($monthName, array_column($GLOBALS['group_posts_array'], 'month')); but this only works on one key. I want to achieve to keys at once, kind of like && in if statement.

thanks in advance.

CodePudding user response:

I don't think $arr in the question is a valid php array, but if it should be a multidimensional array, you might also pass for example an array to in_array with the keys and values that you are looking for:

$arr = [
    [
        "ID" => "10",
        "date" => "04\/22\/20"
    ],
    [
        "ID" => "20",
        "date" => "05\/25\/20"
    ],
    [
        "ID" => "32",
        "date" => "07\/13\/20"
    ]
];

$values = [
    "ID" => "32",
    "date" => "07\/13\/20"
];

var_dump(in_array($values, $arr, true));

$values["ID"] = "33";

var_dump(in_array($values, $arr, true));

Output

bool(true)
bool(false)

CodePudding user response:

You can implement a 'some' function.

function some(array $arr, callable $fn):bool{
    foreach($arr as $index=>$item){
        if($fn($item, $index)){
            return true;
        }
    }
    return false;
}

The usage would be something like the following:

$id = 32;
$date = "07/13/20";
$isInArray = some($arr, function($item, $index) use ($id, $date){
    return $item->id == $id && $item->date == $date;
})
  • Related