Bug #14315: array_unique stopped working on arrays after 4.0.4pl1
| From: | truth at ichaos dot com | Date: | Sun, 02 Dec 2001 20:48:30 +0000 |
| Subject: | Bug #14315: array_unique stopped working on arrays after 4.0.4pl1 | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-72276@lists.php.net to get a copy of this message | ||
From: truth@ichaos.com
Operating system: RedHat 6.2
PHP version: 4.0.5
PHP Bug Type: Arrays related
Bug description: array_unique stopped working on arrays after 4.0.4pl1
I upgraded from php-4.0.4pl1 to php-4.0.5 and 4.0.6 and in both instances,
the script I run array_unique in only returns one item in my array. Here is
a script that will work as expected in php-4.0.4pl1 but not in any version
higher:
$array1[] = array(0 => "one");
$array1[] = array(0 => "two");
$array1[] = array(0 => "two");
$array1[] = array(0 => "three");
$array1[] = array(0 => "three");
$array1[] = array(0 => "three");
echo "<PRE>";
echo "Before unique: <BR>";
var_dump($array1);
$array1 = array_values(array_unique($array1));
echo "After unique: <BR>";
var_dump($array1);
echo "</PRE>";
===
Output for 4.0.4pl1 looks like:
Before unique:
array(6) {
[0]=>
array(1) {
[0]=>
string(3) "one"
}
[1]=>
array(1) {
[0]=>
string(3) "two"
}
[2]=>
array(1) {
[0]=>
string(3) "two"
}
[3]=>
array(1) {
[0]=>
string(5) "three"
}
[4]=>
array(1) {
[0]=>
string(5) "three"
}
[5]=>
array(1) {
[0]=>
string(5) "three"
}
}
After unique:
array(3) {
[0]=>
array(1) {
[0]=>
string(3) "one"
}
[1]=>
array(1) {
[0]=>
string(3) "two"
}
[2]=>
array(1) {
[0]=>
string(5) "three"
}
}
===
Output for versions later look like:
Before unique:
array(6) {
[0]=>
array(1) {
[0]=>
string(3) "one"
}
[1]=>
array(1) {
[0]=>
string(3) "two"
}
[2]=>
array(1) {
[0]=>
string(3) "two"
}
[3]=>
array(1) {
[0]=>
string(5) "three"
}
[4]=>
array(1) {
[0]=>
string(5) "three"
}
[5]=>
array(1) {
[0]=>
string(5) "three"
}
}
After unique:
array(1) {
[0]=>
array(1) {
[0]=>
string(3) "one"
}
}
===
configure lines for both:
php-4.0.4pl1:
'./configure' '--with-apache=../apache_1.3.14' '--prefix=/usr'
'--enable-safe-mode' '--with-exec-dir=/usr/bin' '--with-zlib'
'--with-config-file-path=/etc/php3/apache' '--disable-debug'
'--enable-magic-quotes' '--enable-debugger' '--enable-bcmath'
'--enable-track-vars' '--enable-trans-sid' '--enable-wddx'
'--with-imap'
'--with-ldap' '--with-ibm-db2' '--with-system-regex'
'--with-informix'
'--with-pdflib=/usr/local/pdflib' '--enable-inline-optimization'
'--without-gd'
php-4.0.6
'./configure' '--with-apache=../apache_1.3.14' '--prefix=/usr'
'--enable-safe-mode' '--with-exec-dir=/usr/bin' '--with-zlib'
'--with-config-file-path=/etc/php3/apache' '--disable-debug'
'--enable-magic-quotes' '--enable-debugger' '--enable-bcmath'
'--enable-track-vars' '--enable-trans-sid' '--enable-wddx'
'--with-mcrypt'
'--with-imap' '--with-ldap' '--with-ibm-db2'
'--with-system-regex'
'--with-informix' '--with-pdflib=/usr/local/pdflib'
'--enable-inline-optimization' '--without-gd'
===
As a side note, in order to get php-4.0.6 to compile for both IBM DB2 and
Informix, I had to apply the following:
diff -Naur php-4.0.6.orig/main/internal_functions.c
php-4.0.6/main/internal_func
tions.c
--- php-4.0.6.orig/main/internal_functions.c Fri Nov 30 11:40:20 2001
+++ php-4.0.6/main/internal_functions.c Fri Nov 30 11:40:39 2001
@@ -32,11 +32,11 @@
#include "ext/zlib/php_zlib.h"
#include "ext/bcmath/php_bcmath.h"
#include "ext/imap/php_imap.h"
-#include "ext/informix/php_informix.h"
#include "ext/ldap/php_ldap.h"
#include "ext/mcrypt/php_mcrypt.h"
#include "ext/mysql/php_mysql.h"
#include "ext/odbc/php_odbc.h"
+#include "ext/informix/php_informix.h"
#include "ext/pcre/php_pcre.h"
#include "ext/pdf/php_pdf.h"
#include "ext/posix/php_posix.h"
But thats a whole other bug report. Mcrypt would also fail to compile in
4.0.4pl1, prolly I need to downgrade it.
Those are the only differences I can think of between these versions.
--
Edit bug report at: http://bugs.php.net/?id=14315&edit=1