PHP 4.0 Bug #6507 Updated: in_array never returns a proper value

From: 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

« previous php.dev (#33336) next »