Connecting Tech Pros Worldwide Help | Site Map

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

 
LinkBack Thread Tools Search this Thread
  #1  
Old October 17th, 2006, 01:25 PM
gp
Guest
 
Posts: n/a
Default warning: rewind() supplied argument is not a valid stream resource in...

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, 03:15 PM
Tim Hunt
Guest
 
Posts: n/a
Default 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, 03:45 PM
gp
Guest
 
Posts: n/a
Default 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, 03:55 PM
gp
Guest
 
Posts: n/a
Default 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, 04:15 PM
Jerry Stuckle
Guest
 
Posts: n/a
Default Re: warning: rewind() supplied argument is not a valid stream resourcein...

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, 05:05 PM
Jerry Stuckle
Guest
 
Posts: n/a
Default Re: warning: rewind() supplied argument is not a valid stream resourcein...

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
==================
 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,989 network members.