Try like this:
var_dump(in_array($a, $test, true));
Richard Lynch wrote:
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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php