warning: rewind() supplied argument is not a valid stream resource in... 
October 17th, 2006, 01:25 PM
| | | 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;
} | 
October 17th, 2006, 03:15 PM
| | | 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. | 
October 17th, 2006, 03:45 PM
| | | 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.
| | 
October 17th, 2006, 03:55 PM
| | | 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;
}
| | 
October 17th, 2006, 04:15 PM
| | | 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
================== | 
October 17th, 2006, 05:05 PM
| | | 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
================== | | Thread Tools | Search this Thread | | | |
Posting Rules
| You may not post new threads You may not post replies You may not post attachments You may not edit your posts HTML code is Off | | | | | | 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.
|