How to search objects to see if they contain a specific value?

13,724

To check if the name property exists in an object:

if(isset($obj->name)) {
    // It exists!
}

So, if you want to find those objects that had $name properties:

$result = array_filter($myArray, function($x) {
    return isset($x->name);
}); // Assuming PHP 5.3 or higher
Share:
13,724
Rob Fyffe
Author by

Rob Fyffe

Updated on June 12, 2022

Comments

  • Rob Fyffe
    Rob Fyffe almost 2 years

    I have various objects that look like this:

    Array
    (
    [0] => stdClass Object
        (
            [tid] => 18
            [vid] => 1
            [name] => test
            [description] => 
            [format] => 
            [weight] => 0
            [depth] => 0
            [parents] => Array
                (
                    [0] => 0
                )
    
        )
    
    [1] => stdClass Object
        (
            [tid] => 21
            [vid] => 1
            [name] => tag
            [description] => 
            [format] => 
            [weight] => 0
            [depth] => 0
            [parents] => Array
                (
                    [0] => 0
                )
    
        )
    )
    

    Basically I need to find out weather a [name] value exists in these objects, how do I go about doing this?

  • Rob Fyffe
    Rob Fyffe about 12 years
    Thanks. But it's the actual value I need. I have tried various things such as counting the array items and then using a for loop to check weather each name property of each object equals my value. This I think is working at the moment but if there are a lot of objects, could this get quite slow?
  • Ry-
    Ry- about 12 years
    @Robert: That would depend on how many objects you have, but there's really no faster way to search through an unsorted list.
  • shasi kanth
    shasi kanth over 10 years
    Is it possible to check multiple properties at a time, instead of using isset() for every property ?
  • Ry-
    Ry- over 10 years
    @dskanth: You can pass multiple variables to isset, and it’s the same of anding them all together.