in_array searches for a value, you suply key. This will work as you expect:

$data = array();
foreach ($this->_array_a as $key => $value) {
        if (! in_array($value, $this->_array_b)
                $data['added'][$key] = $this->_array_a[$key];
}

Branko F. Grac(nar wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi.

I've just found weird thing about in_array() function.

Platform: FreeBSD 5.1/PHP 4.3.3-RC1

Consider this code:

$this->_array_a and $this->_array_b ARE IDENTICAL

                $data = array();
                foreach ($this->_array_a as $key => $value) {
                        if (! in_array($key, $this->_array_b)
                                $data['added'][$key] = $this->_array_a[$key];
                }

Therefore after execution $data should be empty.

But there is whole $this->_array_a in $data after execution...

The following code works ($data is empty after execution):
                foreach ($this->_array_a as $key => $value) {
                        if (! isset($this->_array_b[$key]))
                                $data['added'][$key] = $this->_array_a[$key];
                }

Why is this happening?

Brane
-----BEGIN PGP SIGNATURE-----

iD8DBQE/ISOGfiC/E+t8hPcRAll7AJ9EbH6FwwJC/vjsBNG3qMWvWVdmbQCggILs
UvLwPdDkKk2UrXxpPo6vF5M=
=OqAg
-----END PGP SIGNATURE-----




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



Reply via email to