ID:               31926
 Updated by:       [EMAIL PROTECTED]
 Reported By:      gms08701 at yahoo dot com
-Status:           Open
+Status:           Feedback
 Bug Type:         SPL related
 Operating System: FreeBSD 5.3
 PHP Version:      5.0.3
 Assigned To:      helly
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php5-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.0-win32-latest.zip




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

[2005-02-12 18:56:22] gms08701 at yahoo dot com

I forgot to enter the results in my previous entry ->
$ php -f z.php
bool(true)
bool(true)


bool(true)

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

[2005-02-12 18:52:19] gms08701 at yahoo dot com

On what OS, are you trying your my example on??

Unfortunately, I dont have the knowledge on installing php on FreeBSD
(I normally install it via the port).  Im currently investigating if I
can overcome this.

But I was tinkering with the script this morning.
--
$array = array(0);

class RecursiveArrayIterator extends ArrayIterator implements
RecursiveIterator {
   function hasChildren() {
       return (is_array($this->current()));
   }

   function getChildren() {
       return new self($this->current());
   }
}

$it = new RecursiveIteratorIterator(new
RecursiveArrayIterator($array));

while($result = $it->valid())
{
    var_dump($result);
    $it->next();
}

echo "\n\n";

while($result = (bool)each($array))
{
    var_dump($result);
}
--

Notice how the 1st while loop is returning (bool)TRUE *twice*, while
the 2nd loop is returning (bool)TRUE *once*. 
$it->valid() should return (bool)FALSE the second time it was run. 
Shouldn't it???

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

[2005-02-11 20:56:07] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.0-win32-latest.zip

Works fine here.

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

[2005-02-11 03:10:21] gms08701 at yahoo dot com

Description:
------------
Trying to create a RecursiveArrayIterator class, 
using currently available SPL classes.
Its generating this error ->
php in free(): warning: chunk is already free

Apparently it works on win2k ->
http://marc.theaimsgroup.com/?l=php-general&m=110807956115501&w=2

Reproduce code:
---------------
<?php

$array = array(0 => array('world'));

class RecursiveArrayIterator extends ArrayIterator implements
RecursiveIterator {
   function hasChildren() {
       return (is_array($this->current()));
   }

   function getChildren() {
       return new self($this->current());
   }
}

$it = new RecursiveIteratorIterator(new
RecursiveArrayIterator($array));
foreach($it as $key => $val) {
   var_dump($key, $val);
}

?>

Expected result:
----------------
$ php -f z.php
int(0)
string(5) "world"

Actual result:
--------------
$ php -f z.php
int(0)
string(5) "world"
php in free(): warning: chunk is already free


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


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

Reply via email to