ID:               32789
 Updated by:       [EMAIL PROTECTED]
 Reported By:      php at thoftware dot de
-Status:           Open
+Status:           Feedback
 Bug Type:         Arrays related
 Operating System: Windows
 PHP Version:      4.3.9
 New Comment:

Then please explain the problem more clearly because the code you gave
is not understandable.
The main questions are:
what did you expect?
what did you get?

Also, please try newer version before reporting (the latest 4.3.x
version ATM is 4.3.11).


Previous Comments:
------------------------------------------------------------------------

[2005-04-21 15:21:44] php at thoftware dot de

As there are 4 code-sniplets with 4 different results, I thought it
would be a good idea to show the results as comments with the
corresponding code. I don't think it would be more readable otherwise.

------------------------------------------------------------------------

[2005-04-21 15:11:00] [EMAIL PROTECTED]

Please fill in expected & actual results fields.

------------------------------------------------------------------------

[2005-04-21 14:59:37] php at thoftware dot de

Description:
------------
array_pop() removes data from objects via a method.

Reproduce code:
---------------
class foobar { 
  var $cache = array(); 
  function cache($j) { 
    if (!isset($this->cache[$j])) { 
      $this->cache[$j] = array( 
        'wert' => $j, 
        'text' => 'value: '.$j.'<br>', 
        'time' => 'set at '.date('h:i:s').'<br>', 
      ); 
    } 
    return($this->cache[$j]); 
  } 
} 
$foobar =& new foobar(); 
$v = $foobar->cache(3); 
echo $v['time']; 
$v = $foobar->cache(3); 
echo $v['time']; 
$v = $foobar->cache(3); 
echo $v['time']; 
$v = $foobar->cache(3); 
echo $v['time']; 
/* returns as expected
  set at 02:19:11
  set at 02:19:11
  set at 02:19:11
  set at 02:19:11
*/ 
$foobar =& new foobar(); 
echo array_pop($foobar->cache(3)); 
/* returns as desired
  set at 02:19:11
*/ 
$foobar =& new foobar(); 
echo array_pop($foobar->cache(3)); 
echo array_pop($foobar->cache(3)); 
echo array_pop($foobar->cache(3)); 
echo array_pop($foobar->cache(3)); 
/* returns as not desired
  set at 02:19:11
  value: 3
  3 

*/ 
$foobar =& new foobar(); 
$v = $foobar->cache(3); 
echo $v['time']; 
echo array_pop($foobar->cache(3)); 
/* returns as it should
  set at 02:19:11

  Fatal error: Only variables can be passed by reference in ... 
*/ 
Seems that the first call with a method isn't recognized as being not a
variable =8-0.

Expected result:
----------------
see above

Actual result:
--------------
see above


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=32789&edit=1

Reply via email to