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

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • gp

    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($co ntents) {
    if ( is_array($conte nts)) {
    if ( is_array($conte nts[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;
    }

  • Tim Hunt

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


    gp wrote:
    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.
    >
    >
    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.

    Comment

    • gp

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


      aaaaarrrrrg.... . i think i rewrote that function incorrectly...a fter
      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...@gma il.comwrote:
      gp wrote:
      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.
      >
      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.

      Comment

      • gp

        #4
        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?
        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;
        }

        Comment

        • Jerry Stuckle

          #5
          Re: warning: rewind() supplied argument is not a valid stream resourcein...

          gp wrote:
          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@attgl obal.net
          =============== ===

          Comment

          • Jerry Stuckle

            #6
            Re: warning: rewind() supplied argument is not a valid stream resourcein...

            gp wrote:
            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>
            >
            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@attgl obal.net
            =============== ===

            Comment

            Working...