通过将Object->值与数组PHP中的所有Object->值进行比较,在数组中查找对象

时间:2014-06-24 20:18:23

标签: php arrays object

所以我的数组包含这样的对象:

$arr = array(
    new Card('10', 'Spades'),
    new Card('Jack', 'Diamonds'),
    new Card('King', 'Spades')
);

现在我有一个功能:

function hasCard(Card $card) {
    if (in_array($card, $arr)) return true;

    return false;
} 

现在上面并没有真正起作用,因为我需要在没有循环的情况下对($card->rank == $arr[$x]->rank)中的每个元素进行比较$arr。 PHP上是否有一个函数可以修改array_search的compareTo方法?

2 个答案:

答案 0 :(得分:3)

我建议在这里使用array_filter。 (注意:确保$arr功能中的hasCard可用)

function hasCard(Card $card) {
    $inArray = array_filter($arr, function($x) use($card){
        return $x->rank === $card->rank;
    });

    return count($inArray) > 0;
}

DEMO:https://eval.in/166460

答案 1 :(得分:1)

$arr变量在函数hasCard中不可用,除非您将其作为参数传递。

要回答您的问题,请查看array_filter。这将为您提供一个可调用的函数,您可以在其中传递$arr$card作为参数。