Re: in_array() related problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Try providing a custom comparison function.

Almost for sure, PHP is attempting to "test" the == by a deeper scan
than you think.

On Fri, November 3, 2006 10:56 am, tamcy wrote:
> Hello all,
>
> I'm new to this list. To not flooding the bug tracking system I hope
> to clarify some of my understanding here.
>
> I am referring to the (now bogus) bug report
> http://bugs.php.net/bug.php?id=39356&edit=2. This happens after my
> upgrade to PHP 5.2, where the code shown produces a "Fatal error:
> Nesting level too deep - recursive dependency?". Same testing code
> reproduced below:
>
> ----------------------------
> <?php
> class A
> {
> 	public $b;
> }
>
> class B
> {
> 	public $a;
> }
>
> $a = new A;
> $b = new B;
> $b->a = $a;
> $a->b = $b;
>
> $test = array($a, $b);
>
> var_dump(in_array($a, $test));
> ----------------------------
>
> I think this is not rare for a child item to have knowledge about its
> parent, forming a cross-reference.
>
> This code runs with no problem in PHP5.1.6, but not in 5.2. Ilia
> kindly points out that "In php 5 objects are passed by reference, so
> your code does in
> fact create a circular dependency.". I know the passed by reference
> rule. What I'm now puzzled is, why this should lead to an error.
>
> To my knowledge, despite the type-casting issue and actual algorithm,
> in_array() should actually do nothing more than:
>
> function mimic_in_array($search, $list)
> {
>   foreach ($list as $item)
>     if ($search == $item)
>       return true;
>   return false;
> }
>
> Which means:
> 1. in_array() isn't multi-dimensional.
> 2. in_array() doesn't care about the properties of any object.
>
> That is, I don't expect in_array() to nest through all available inner
> arrays for a match, not to mention those are object properties, not
> arrays.
>
> So here is the question: Why should in_array() throws such a "Fatal
> error: Nesting level too deep" error? Why should it care? Is there any
> behaviour I don't know?
>
> Thanks all in advance.
>
> Tamcy
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some starving artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux