#45369 [Fbk->Opn]: $_SESSION-containing-arrays assignment to var does not correspond to manual!!

From: Date: Tue, 01 Jul 2008 11:05:46 +0000
Subject: #45369 [Fbk->Opn]: $_SESSION-containing-arrays assignment to var does not correspond to manual!!
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-126143@lists.php.net to get a copy of this message
ID: 45369 User updated by: thomas dot meike at nic dot at -Summary: strange behaviour on saving arrays with moved cursors in Session Reported By: thomas dot meike at nic dot at -Status: Feedback +Status: Open Bug Type: Arrays related Operating System: Linux Unix Windows PHP Version: 5.2.6 New Comment: >>You should reset() it "manually", I don't see any wrong behaviour >>here. yes, resetting it manually is always possible >>Where in the manual does it say that assiging to the "magic" >>$_SESSION >>superglobal the array is reset automatically?? I did not talk abount assignments to $_SESSION!!! the only thing i wanted to point out here is that now, assigning $_SESSION-containing array-constructs to any local variable does not work any more as it did before or lets say it does not correspond to the following part in the manual: http://www.php.net/manual/en/language.types.array.php Array assignment always involves value copying. It also means that the internal array pointer used by current() and similar functions is reset. Use the reference operator to copy an array by reference. Previous Comments: ------------------------------------------------------------------------ [2008-07-01 09:49:12] jani@php.net You should reset() it "manually", I don't see any wrong behaviour here. Where in the manual does it say that assiging to the "magic" $_SESSION superglobal the array is reset automatically?? ------------------------------------------------------------------------ [2008-06-26 15:31:50] thomas dot meike at nic dot at Description: ------------ you define an array step through ONLY SOME elements using list-each structure stepping through you perform some changes on data finishing the while-structure the array is saved in session let's say, somewhere else in your businesslogic you need these session data once more: you initiate a variable with the recently saved session array the PROBLEM now: the variable is initiated with the array NOT RESETTED as defined in documentation an array assigned to a variable has to be resetted the problem exists also with php version 5.2.5 Reproduce code: --------------- session_start(); $arrL = array("test1","test2","test3","test4","test5","test6","test7","test8","test9","test10"); if(!isset($_SESSION['DATA'])){ $_SESSION['DATA']=$arrL; } $counter = 3; $arrSessData = $_SESSION['DATA']; while((list($index, $value) = each($arrSessData)) && ($counter > 0) ) { $arrSessData[$index] = '_test_' . $value; $counter--; } //store changes in session $_SESSION['DATA']=$arrSessData; //somewhere else within the businesslogic, init local variable and step through $arrSessDataProc = $_SESSION['DATA']; while((list($index, $value) = each($arrSessDataProc)) ){ echo "<br>" . $index . ' ' . $value; } Expected result: ---------------- 0 _test_test1 1 _test_test2 2 _test_test3 3 test4 4 test5 5 test6 6 test7 7 test8 8 test9 9 test10 Actual result: -------------- 4 test5 5 test6 6 test7 7 test8 8 test9 9 test10 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45369&edit=1

« previous php.bugs (#126143) next »