所以我的数组包含这样的对象:
$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方法?
答案 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;
}
答案 1 :(得分:1)
$arr
变量在函数hasCard
中不可用,除非您将其作为参数传递。
要回答您的问题,请查看array_filter。这将为您提供一个可调用的函数,您可以在其中传递$arr
和$card
作为参数。