PHP 4.0 Bug #6507 Updated: in_array never returns a proper value
| From: | Bug Database | Date: | Sat, 16 Sep 2000 14:10:21 +0000 |
| Subject: | PHP 4.0 Bug #6507 Updated: in_array never returns a proper value | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-33336@lists.php.net to get a copy of this message | ||
ID: 6507
User Update by: darron@froese.org
Status: Open
Old-Bug Type: Misbehaving function
Bug Type: *General Issues
Description: in_array never returns a proper value
I tried this again on another server - it's a Mandrake 7.0 box. I recompiled Apache with this
configure line:
./configure \
--prefix=/usr/local/apache \
--enable-module=so
Then I compiled php-4.0.0 with this line and tested:
./configure --with-apxs=/usr/local/apache/bin/apxs
The code that I posted before worked just fine with php-4.0.0. It's been posted here:
<http://gateway.javelindigital.com/test.phps>
<http://gateway.javelindigital.com/test.php>
I just grabbed the CVS code (8PM MST 09/16/2000) for php4 and recompiled the module with this
configure line:
./configure --with-apxs=/usr/local/apache/bin/apxs
Now that I've upgraded to 4.0.3-dev, the code doesn't work.
This is the 4th machine I've tested this on:
<http://froese.org/~darron/test.php>
<http://www.gary-campbell.com/test.php>
<http://www.educ8r.net/~darron/test.php>
<http://gateway.javelindigital.com/test.php>
Only the machine with php-4.0.0 works - the rest all fail.
Previous Comments:
---------------------------------------------------------------------------
[2000-09-03 14:44:58] darron@froese.org
> before using next, perv and current, you should do reset(). > Then, next and prev not only
> get items, but move array
> pointer. Please read the manual about that.
That's the behaviour you see in php 4.0.0 and the behaviour I'm used to (that's why
there's two times I do "if (in_array("$counter", $items))"). It
doesn't work in anything since then.
This code works just fine in PHP 4.0.0 *with* or *without* the reset($items) - it's online and
working at
<http://gary-campbell.com/test.php>
This code fails under any version of PHP since then on multiple machines. It's online and
failing at
<http://www.educ8r.net/~darron/test3.php>
Here's the code:
<?
for ($counter = 1; $counter < 11; $counter++) {
$items[$counter] = $counter;
}
for ($counter = 1; $counter < 11; $counter++) {
print "$counter = $items[$counter]<BR>n";
}
print "<P>";
for ($counter = 1; $counter < 11; $counter++) {
print "$counter = $items[$counter]<BR>n";
reset($items);
if (in_array("$counter", $items)) {
$current_item = current($items);
$previous_item = prev($items);
print "Current: $current_item<BR>n";
print "Previous: $previous_item<BR>n";
}
if (in_array("$counter", $items)) {
$next_item = next($items);
print "Next: $next_item<BR>n";
}
if ($previous_item) {
print "Prev Item Exists<BR>n";
} else {
print "Prev Item Does NOT Exist<BR>n";
}
if ($next_item) {
print "Next Item Exists<P>n";
} else {
print "Next Item Does NOT Exist<P>n";
}
}
?>
---------------------------------------------------------------------------
[2000-09-03 06:01:20] stas@php.net
before using next, perv and current, you should do reset(). Then, next and prev not only get items,
but move array pointer. Please read the manual about that.
---------------------------------------------------------------------------
[2000-09-03 00:24:00] darron@froese.org
Sorry, the description is wrong - in_array still seems to be working, it's current($array),
prev($array) and next($array) that seem to be misbehaving.
---------------------------------------------------------------------------
[2000-09-03 00:08:43] darron@froese.org
This script works just fine in PHP 4.0.0 but fails in 4.0.1pl2, 4.0.2, PHP from CVS as of 8PM
09/02/2000.
It's online and works here:
PHP 4.0.0 <http://www.gary-campbell.com/test.php>
Mandrake 7.0, Apache 1.3.12, Compiled as a DSO.
It fails on this machine:
PHP 4.0.2-cvs <http://www.educ8r.net/~darron/test.php>
Mandrake 7.1, Apache 1.3.12, Compiled as a DSO.
I tried it on a machine just now with the CVS version of PHP and it still fails. I've also
tried it on a 4.0.2-release machine - it fails there too.
<?
for ($counter = 0; $counter < 11; $counter++) {
$items[$counter] = $counter;
}
for ($counter = 0; $counter < 11; $counter++) {
print "$counter = $items[$counter]<BR>n";
}
print "<P>";
for ($counter = 0; $counter < 11; $counter++) {
print "$counter = $items[$counter]<BR>n";
if (in_array("$counter", $items)) {
$current_item = current($items);
$previous_item = prev($items);
print "Current: $current_item<BR>n";
print "Previous: $previous_item<BR>n";
}
if (in_array("$counter", $items)) {
$next_item = next($items);
print "Next: $next_item<BR>n";
}
if ($prev_item) {
print "Prev Item Exists<BR>n";
} else {
print "Prev Item Does NOT Exist<BR>n";
}
if ($next_item) {
print "Next Item Exists<BR>n";
} else {
print "Next Item Does NOT Exist<P>n";
}
}
?>
The php-4.0.0 was compiled with:
./configure
--with-apxs=/usr/local/apache/bin/apxs
--with-mysql=/usr/local/mysql-prod
--with-pdflib
--enable-ftp
--with-ldap
--with-imap=../imap-4.5
--with-zlib
--with-jpeg-dir=/usr/lib
--with-tiff-dir=/usr/lib
--with-zlib-dir=/usr/lib
--with-png-dir=/usr/lib
--with-gd
--with-ttf
--with-xml
--enable-trans-sid
--enable-track-vars=yes
--enable-magic-quotes=yes
The php-4.0.2 was compiled with:
./configure
--with-apxs=/usr/local/apache/bin/apxs
--with-mysql=/usr/local/mysql-prod
--with-pdflib
--enable-ftp
--with-ldap
--with-imap=../imap-4.5
--with-zlib
--with-jpeg-dir=/usr/lib
--with-tiff-dir=/usr/lib
--with-zlib-dir=/usr/lib
--with-png-dir=/usr/lib
--with-gd
--with-ttf
--with-xml
--enable-trans-sid
--enable-track-vars=yes
--enable-magic-quotes=yes
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=6507