ID: 47623
User updated by: Henry at huis-stijl dot nl
Reported By: Henry at huis-stijl dot nl
-Status: Feedback
+Status: Open
Bug Type: Scripting Engine problem
Operating System: Apache/2.0.52 (CentOS)
PHP Version: 5.2.9
New Comment:
<?php
session_start();
ini_set('session.cache_limiter', 'private');
// © 2009 Huis-stijl, Henry Hekman
$_SESSION['villas'] = array
(
1 => array(1,2,3),
2 => array(2,3,4),
3 => array(3,4,5),
4 => array(4,5,6),
);
While(@$_SESSION['villas'] != array())
{
$row = array_shift(@$_SESSION['villas']);
print_r($row);
}// einde while
?>
on php 4 i get
Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 2 [1] => 3 [2] => 4
) Array ( [0] => 3 [1] => 4 [2] => 5 ) Array ( [0] => 4 [1] => 5 [2] =>
6 )
on phph 5.2.9 i get a loop that doesnt end
Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3
) Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] =>
3 ) Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2]
=> 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2
[2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] =>
2 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1]
=> 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 )
Previous Comments:
------------------------------------------------------------------------
[2009-03-11 13:51:35] [email protected]
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
------------------------------------------------------------------------
[2009-03-11 12:56:34] Henry at huis-stijl dot nl
Description:
------------
Script was working perfectly on PHP 4 when updated to PHP5.2.9 I found
an error. I was filling a array in the session and looped it with
array_shift until the arry was empty.
This loop kept giving me the first value but did not erased it from te
original arry.
Reproduce code:
---------------
$row = array_shift(@$_SESSION['villas']);
Expected result:
----------------
1. $row getting the first element from $_SESSION['villas']
2. $_SESSION['villas'] to get lost the first element.
Actual result:
--------------
1. $row getting the first element from $_SESSION['villas']
2. $_SESSION['villas'] did not lost the first element and was
unchanged
I cann bypass this failure by using:
$arr_temp = @$_SESSION['villas'];
$row = array_shift($arr_temp);
$_SESSION['villas'] = $arr_temp;
unset($arr_temp);
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=47623&edit=1