Connecting Tech Pros Worldwide Help | Site Map

warning: rewind() supplied argument is not a valid stream resource in...

  #1  
Old October 17th, 2006, 02:25 PM
gp
Guest
 
Posts: n/a
i am implementing Iterator in a class, I have pretty much copied the
code from php.net on Object Iteration. Adding all the normal methods
for the task...rewind, current, next, etc.

I was attempting to add a seek method but am stymied by the above
warnin, as well getting a seek on index 0 (zero) to work.

public function __construct($contents) {
if ( is_array($contents)) {
if ( is_array($contents[1])) {
$this->cktl = $contents[1];
}
}
}

public function rewind() {

$cktl = rewind($this->cktl);
return $cktl;
}

public function current() {
$cktl = current($this->cktl);
return $cktl;
}

public function key() {
$cktl = key($this->cktl);
return $cktl;
}

public function next() {
$cktl = next($this->cktl);
return $cktl;
}

public function valid() {
$cktl = $this->current() !== FALSE;
return $cktl;
}

public function myseek($intPos) {
$myPos = 0;
$this->rewind();
while ( $myPos < $intPos && $this->valid() ) {
$cktl = $this->next();
$myPos++;
}
if ( !$this->valid() ) {
die("Invalid seek position");
}

return $cktl;
}

  #2  
Old October 17th, 2006, 04:15 PM
Tim Hunt
Guest
 
Posts: n/a

re: warning: rewind() supplied argument is not a valid stream resource in...



gp wrote:
Quote:
i am implementing Iterator in a class, I have pretty much copied the
code from php.net on Object Iteration. Adding all the normal methods
for the task...rewind, current, next, etc.
>
Quote:
>
public function rewind() {
>
$cktl = rewind($this->cktl);
return $cktl;
}

You need to use reset($this->cktl) not rewind($this->cktl), the rewind
function is different to the rewind method of an iterator as it does
not work on arrays and it resets the pointer position of a file handle.

  #3  
Old October 17th, 2006, 04:45 PM
gp
Guest
 
Posts: n/a

re: warning: rewind() supplied argument is not a valid stream resource in...



aaaaarrrrrg..... i think i rewrote that function incorrectly...after
going back thank you for pointing that out for me :-D
i'll give it a whack
gp
On Oct 17, 11:28 am, "Tim Hunt" <tim.n.h...@gmail.comwrote:
Quote:
gp wrote:
Quote:
i am implementing Iterator in a class, I have pretty much copied the
code from php.net on Object Iteration. Adding all the normal methods
for the task...rewind, current, next, etc.
>
Quote:
public function rewind() {
>
Quote:
$cktl = rewind($this->cktl);
return $cktl;
}You need to use reset($this->cktl) not rewind($this->cktl), the rewind
function is different to the rewind method of an iterator as it does
not work on arrays and it resets the pointer position of a file handle.
  #4  
Old October 17th, 2006, 04:55 PM
gp
Guest
 
Posts: n/a

re: warning: rewind() supplied argument is not a valid stream resource in...



Back to this issue? My seek function hates me and index 0....any
ideas?
Quote:
I was attempting to add a seek method but am stymied by the above
warnin, as well getting a seek on index 0 (zero) to work.
public function myseek($intPos) {
$myPos = 0;
$this->rewind();
while ( $myPos < $intPos && $this->valid() ) {
$cktl = $this->next();
$myPos++;
}
if ( !$this->valid() ) {
die("Invalid seek position");
}
>
return $cktl;
}
  #5  
Old October 17th, 2006, 05:15 PM
Jerry Stuckle
Guest
 
Posts: n/a

re: warning: rewind() supplied argument is not a valid stream resource in...


gp wrote:
Quote:
i am implementing Iterator in a class, I have pretty much copied the
code from php.net on Object Iteration. Adding all the normal methods
for the task...rewind, current, next, etc.
>
I was attempting to add a seek method but am stymied by the above
warnin, as well getting a seek on index 0 (zero) to work.
>
<code snipped>

rewind() is for files. I think you're looking for reset().

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
  #6  
Old October 17th, 2006, 06:05 PM
Jerry Stuckle
Guest
 
Posts: n/a

re: warning: rewind() supplied argument is not a valid stream resource in...


gp wrote:
Quote:
i am implementing Iterator in a class, I have pretty much copied the
code from php.net on Object Iteration. Adding all the normal methods
for the task...rewind, current, next, etc.
>
I was attempting to add a seek method but am stymied by the above
warnin, as well getting a seek on index 0 (zero) to work.
<snip>
Quote:
>
public function myseek($intPos) {
$myPos = 0;
$this->rewind();
while ( $myPos < $intPos && $this->valid() ) {
$cktl = $this->next();
$myPos++;
}
if ( !$this->valid() ) {
die("Invalid seek position");
}
>
return $cktl;
}
>
if $intPos is 0, you never enter your while loop and therefore never
execute your assignment to $cktl. Also, it's unnecessary overhead to
set $cktl each time through the loop. All you really need to do is
advance the pointer.

Try this:

public function myseek($intPos) {
$myPos = 0;
$this->rewind();
while ( $myPos < $intPos && $this->valid() ) {
$this->next();
$myPos++;
}
if ( !$this->valid() ) {
die("Invalid seek position");
}

return $this->current();
}


--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
Bug pinbot answers 5 June 2nd, 2008 11:34 AM