NYCPHP Meetup

NYPHP.org

[nycphp-talk] in_array() to find an object within an array

Phil Powell phillip.powell at adnet-sys.com
Mon Mar 29 16:08:23 EST 2004


[PHP]
          if (is_array($_POST["assoc_$key"])) {
           foreach ($this->getAssocSectionsObjArray($key, $dbAP) as $obj) {
            print_r($obj); print_r(" in array? "); 
print_r(in_array($obj, $result)); print_r("<P>");
            if (!in_array($obj, $result)) array_push($result, $obj);
           }
          }
[/PHP]

Here is the output of the result of this script:

[Quote]
stdClass Object ( [id] => 2 [placement_name] => Placement #1 ) in array?
Warning: in_array(): Wrong datatype for first argument in 
/image_catalog/include/classes.inc.php on line 99


Warning: in_array(): Wrong datatype for first argument in 
/www/html/mu-spin/image_catalog/include/classes.inc.php on line 100
stdClass Object ( [id] => 4 [placement_name] => Placement #10 ) in array?
Warning: in_array(): Wrong datatype for first argument in 
/image_catalog/include/classes.inc.php on line 99


Warning: in_array(): Wrong datatype for first argument in 
/www/html/mu-spin/image_catalog/include/classes.inc.php on line 100
stdClass Object ( [id] => 6 [placement_name] => 
[url]http://blah.com[/url] ) in array?
Warning: in_array(): Wrong datatype for first argument in 
/image_catalog/include/classes.inc.php on line 99


Warning: in_array(): Wrong datatype for first argument in 
/image_catalog/include/classes.inc.php on line 100
[/Quote]

What I have to do is compare an array of objects, $result, with another 
array of objects, $this->getAssocSectionsObjArray($key, $dbAP).  Both 
arrays will be identical in structure and object formatting, but not in 
object data content.  What I need to do is to find out if that one array 
has the very same object as the other, then don't add it to $result, 
otherwise, add to $result.

The object formatting is as follows:

[Quote]obj: stdClass Object ( [id] => 2 [placement_name] => Placement #1 
)[/Quote]

And $result can look like this:

[Quote]
result: Array ( [0] => stdClass Object ( [id] => 6 [placement_name] => 
Placement #27 ) [1] => stdClass Object ( [id] => 2 [placement_name] => 
Placement #1 ) )
[/Quote]
I don't wish to loop through both arrays, that would be a performance 
nightmare to do that.  Is there a version of in_array in existence for 
comparing objects?

Thanx
Phil

PS: I went to this manual example at 
[url]http://us3.php.net/manual/en/function.in-array.php#40079[/url] but 
that involves recursive handling and object rebuilding - this, were I to 
figure out what the living blue it is, would have to be put inside 
another loop.. OUCH!

-- 
Phil Powell
Web Developer
  ADNET Systems, Inc.
  11260 Roger Bacon Drive, Suite 403
  Reston, VA  20190-5203
Phone: (703) 709-7218 x107   Cell: (571) 437-4430   FAX: (703) 709-7219
EMail:  Phillip.Powell at adnet-sys.com      AOL IM: SOA Dude







More information about the talk mailing list