Edit report at https://bugs.php.net/bug.php?id=61118&edit=1
ID: 61118 Updated by: ras...@php.net Reported by: letharion at gmail dot com Summary: array_intersect_assoc() with duplicate arrays for values gives of a notice Status: Not a bug Type: Bug Package: Arrays related Operating System: Gentoo Linux PHP Version: 5.4.0RC7 Block user comment: N Private report: N New Comment: Your example in this bug is also a good illustration of why the notice is needed. This function does't support nested arrays. It does a single-level comparison and as such it actually gave you an unintuitive result. The intersection is supposed to give you the values that appear in both arrays and have the same keys. So if you compared: ['baz' => 1] and ['baz' => 2] there are no intersecting values. However, if you nest those: ['baz' => [1] ] and ['baz' => [2] ] Now you suddenly have a result. This is because it doesn't look at the contents of the nested arrays, it just converts them to strings and compares them. This would give you the same result: ['baz' => [1] ] and ['baz' => 'Array'] which is probably not what you had in mind. That's why you are getting a notice here. Previous Comments: ------------------------------------------------------------------------ [2012-02-17 08:52:55] letharion at gmail dot com Thank you for pointing this out to me. Sorry about the "no-bug". ------------------------------------------------------------------------ [2012-02-17 08:37:30] ni...@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php This is expected behavior: The notice indicates incorrect usage of the function. array_intersect does not compare the arrays but casts them to strings thus making both "Array" and issuing a notice. The behavior always has been like this, but the notice was added in 5.4 :) ------------------------------------------------------------------------ [2012-02-17 07:36:55] letharion at gmail dot com Description: ------------ Gentoo package version: dev-lang/php-5.4.0_rc7-r1 Configure: ./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --prefix=/usr/lib64/php5.4 --mandir=/usr/lib64/php5.4/man --infodir=/usr/lib64/php5.4/info --libdir=/usr/lib64/php5.4/lib --with-libdir=lib64 --without-pear --disable-maintainer-zts --disable-bcmath --with-bz2 --disable-calendar --enable-ctype --with-curl --with-curlwrappers --enable-dom --without-enchant --enable-exif --enable-fileinfo --enable-filter --disable-ftp --with-gettext --without-gmp --enable-hash --without-mhash --with-iconv --disable-intl --enable-ipv6 --enable-json --without-kerberos --enable-libxml --enable-mbstring --with-mcrypt --without-mssql --with-onig=/usr --with-openssl --with-openssl-dir=/usr --disable-pcntl --enable-phar --enable-pdo --without-pgsql --enable-posix --with-pspell --without-recode --enable-simplexml --disable-shmop --without-snmp --disable-soap --disable-sockets --without-sqlite3 --without-sybase-ct --disable-sysvmsg --disable-sysvsem --disable-sysvshm --without-tidy --enable-tokenizer --disable-wddx --enable-xml --disable-xmlreader --disable-xmlwriter --without-xmlrpc --without-xsl --disable-zip --with-zlib --disable-debug --enable-dba --without-cdb --with-db4 --disable-flatfile --with-gdbm --disable-inifile --without-qdbm --with-freetype-dir=/usr --with-t1lib=/usr --disable-gd-jis-conv --with-jpeg-dir=/usr --with-png-dir=/usr --without-xpm-dir --with-gd --with-ldap --without-ldap-sasl --with-mysql=mysqlnd --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysqli=mysqlnd --without-pdo-dblib --with-pdo-mysql=mysqlnd --without-pdo-pgsql --without-pdo-sqlite --without-pdo-odbc --with-readline --without-libedit --without-mm --with-pcre-regex=/usr --with-pcre-dir=/usr --with-config-file-path=/etc/php/cli-php5.4 --with-config-file-scan-dir=/etc/php/cli-php5.4/ext-active --disable-embed --enable-cli --disable-cgi --disable-fpm --without-apxs2 Test script: --------------- <?php $foo = array('baz' => Array (0 => 'X' )); $bar = array('baz' => Array (1 => 'Y' )); print_r(array_intersect_assoc($foo, $bar)); Expected result: ---------------- Array ( [baz] => Array ( [0] => X ) ) Actual result: -------------- PHP Notice: Array to string conversion in array_intersect_assoc_short.php on line 6 Notice: Array to string conversion in array_intersect_assoc_short.php on line 6 PHP Notice: Array to string conversion in array_intersect_assoc_short.php on line 6 Notice: Array to string conversion in array_intersect_assoc_short.php on line 6 Array ( [baz] => Array ( [0] => X ) ) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=61118&edit=1