PHP 4.0 Bug #7578 Updated: next() and current() do not return referenceing arrays

From: Date: Fri, 03 Nov 2000 03:12:58 +0000
Subject: PHP 4.0 Bug #7578 Updated: next() and current() do not return referenceing arrays
Groups: php.dev 
Request: Send a blank email to php-dev+get-36900@lists.php.net to get a copy of this message
ID: 7578 User Update by: mog@linux.nu Old-Status: Closed Status: Open Bug Type: Arrays related Description: next() and current() do not return referenceing arrays 1. yes, i have read the manual on references explained. 2. ok, array(&$array2) might not work but i can't see why. what if we make it like this? shouldn't this work or it should work like this if current(), reset(), prev() and next() were modified to return references instead. <?PHP $array = array(array(0,1,2)); print current(current($array))."<br>"; // returns 0 print "<b>Try 1!</b><br>"; print next(current($array))."<br>"; // returns 1, correct but the internal pointer is only moved in the copy current() returned print current(current($array))."<br>"; // returns 0, wrong, should be 1 print current($array[0])."<br>"; //returns 0, wrong, should be 1 print "<b>Try 2!</b><br>"; print next($array[0])."<br>"; print current(current($array))."<br>"; // returns 0, wrong, should be 1 print current($array[0])."<br>"; // returns 1, yes, correct! but the code above still didn't work! ?> I really think that this behaviour should be changed, i need it for a project i'm working with. Previous Comments: --------------------------------------------------------------------------- [2000-11-01 19:43:52] waldschrott@php.net you simply can´t do it that way, please read the manual on foreach() etc. and that additional "&" in > $array = array(&$array2); has absolutely no effect here, at least not what you expect it to do (please also read "references explained") > print next(current($array))."<br>"; // returns 1, correct > but the internal > pointer is only moved in the copy current() returned sure, current($array) returns a copy and thus all results you´ve mentioned are fine --------------------------------------------------------------------------- [2000-11-01 19:29:27] mog@linux.nu i hope you can see what is wrong in the code below <?PHP $array2 = array(0,1,2); $array = array(&$array2); print current(current($array))."<br>"; // returns 0 print "<b>Try 1!</b><br>"; print next(current($array))."<br>"; // returns 1, correct but the internal pointer is only moved in the copy current() returned print current(current($array))."<br>"; // returns 0, wrong, should be 1 print current($array2)."<br>"; //returns 0, wrong, should be 1 print "<b>Try 2!</b><br>"; print next($array[0])."<br>"; print current(current($array))."<br>"; // returns 0, wrong, should be 1 print current($array[0])."<br>"; // returns 1, yes, correct! but the code above still didn't work! ?> --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=7578

« previous php.dev (#36900) next »