in_array() to find an object inside an array

From: Phil Powell (soazine_at_erols.com)
Date: 03/29/04


Date: 29 Mar 2004 13:05:40 -0800


[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!



Relevant Pages

  • Re: fgets() - supposed to be simple :)
    ... shouldn't) use the macro with a semicolon. ... And you need an array of 100 floats for the amount of the purchase? ... >void menu; ... This is an error, not a warning. ...
    (comp.lang.c)
  • Re: Array of Pointers
    ... complex) data structure than a simple array to do this efficiently. ... int mainor int main ... bigarray.c:6: warning: ISO C89 forbids variable-size array `arrayofpointers' ...
    (comp.lang.c)
  • Re: Are constants not locally static?
    ... array length of the value it's allowed (but not compliant, ... yada yada ... ... So onto the code that caused the warning. ... The package is ...
    (comp.lang.vhdl)
  • Re: HELP! Trying to add Email Notification to Download File Code
    ... This warning will go away once you get the headers sorted out. ... Invalid argument supplied for foreachin ... # verifies if the $filelist array has an element ... # builds an array with all valid files in the ...
    (comp.lang.php)
  • Re: Stack growth direction to thwart buffer overflow attacks
    ... > via SIGABRT or whatever when the buffer is exceeded, ... the MS compiler has an extension that lets you mark ... can insist that the warning count falls over time. ... For the wider problem of running off the ends of an array, ...
    (comp.security.misc)