PHP-通过比较needle的所有属性来检查对象数组中是否存在对象


PHP - check if object exists from a array of objects by comparing by all properties of needle

我有对象。一个是针,它是具有多个属性的简单对象,另一个是对象数组的草垛。

这是针头

DeviceType Object
    (
        [idDeviceType] => 167
        [Name] => monirul
        [TargetURL] => www.google.com
        [idAccessPlan] => 1
    )

这是干草堆,

Array
(
    [0] => DeviceType Object
        (
            [idDeviceType] => 167
            [Name] => monirul
            [TargetURL] => www.google.com
            [idAccessPlan] => 1
        )
    [1] => DeviceType Object
        (
            [idDeviceType] => 168
            [Name] => monirul iPad
            [TargetURL] => www.yahoo.com
            [idAccessPlan] => 1
        )
    [2] => DeviceType Object
        (
            [idDeviceType] => 169
            [Name] => monirul phone
            [TargetURL] => www.bing.com
            [idAccessPlan] => 1
        )
)

现在我想检查一下我的针是否在干草堆里。不仅通过任何特定属性,还通过整个对象属性(idDeviceType、Name、TargetURL、idAccessPlan)。我怎样才能有效地做到这一点?提前谢谢。

使用serialize有很多变化。若你们只是想知道针是否在大海捞针,那个么这很简单:

$result = strpos(serialize($haystack), serialize($needle)) !== false;
var_dump($result); //gives true or false

使用in_array()。

if (in_array($object, $array_of_objects)) { /* do stuff */ }

如果您想检查数组中是否存在对象的相同实例,请添加"true":

if (in_array($object, $array_of_objects, true)) { /* do stuff */ }