Return value of 'each', 'current', 'next', 'end'

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Hermann.Richter@gmail.com

    Return value of 'each', 'current', 'next', 'end'

    These array functions: 'each', 'current', 'next', 'end'

    They return a reference or a value.

    let's say I want to modify the last value of an array without iterating
    through all of them.

    I would do:

    <?
    end($array) ;
    current($array) ="new value" ;
    ?>

    is that posible??

    Thanks.

  • Chung Leong

    #2
    Re: Return value of 'each', 'current', 'next', 'end'

    Hermann.Richter @gmail.com wrote:
    These array functions: 'each', 'current', 'next', 'end'
    >
    They return a reference or a value.
    They return values.
    let's say I want to modify the last value of an array without iterating
    through all of them.
    >
    I would do:
    >
    <?
    end($array) ;
    current($array) ="new value" ;
    ?>
    >
    is that posible??
    Try

    end($array);
    $array[key($array)] = "new value";

    Comment

    • Daz

      #3
      Re: Return value of 'each', 'current', 'next', 'end'


      Chung Leong wrote:
      Hermann.Richter @gmail.com wrote:
      These array functions: 'each', 'current', 'next', 'end'

      They return a reference or a value.
      >
      They return values.
      >
      let's say I want to modify the last value of an array without iterating
      through all of them.

      I would do:

      <?
      end($array) ;
      current($array) ="new value" ;
      ?>

      is that posible??
      >
      Try
      >
      end($array);
      $array[key($array)] = "new value";
      $array[(sizeof($array)-1)] ="new value";
      should also work.

      I would imagine that end() and sizeof() work very much the same way.
      They probably both iterate through the array to the end only 1 counts
      as it goes, and the other returns the key of the last element in the
      array.

      Comment

      • Pedro Graca

        #4
        Re: Return value of 'each', 'current', 'next', 'end'

        Daz wrote:
        >
        Chung Leong wrote:
        >Hermann.Richter @gmail.com wrote:
        <?
        end($array) ;
        current($array) ="new value" ;
        ?>
        >
        is that posible??
        >>
        >end($array);
        >$array[key($array)] = "new value";
        >
        $array[(sizeof($array)-1)] ="new value";
        should also work.
        <?php
        $tmp = array('forty-two'=>42, 'twenty-four'=>24);
        echo $array[sizeof($array)-1];
        ?>

        --
        File not found: (R)esume, (R)etry, (R)erun, (R)eturn, (R)eboot

        Comment

        • Chung Leong

          #5
          Re: Return value of 'each', 'current', 'next', 'end'

          Daz wrote:
          $array[(sizeof($array)-1)] ="new value";
          should also work.
          >
          I would imagine that end() and sizeof() work very much the same way.
          They probably both iterate through the array to the end only 1 counts
          as it goes, and the other returns the key of the last element in the
          array.
          No. end() move the internal point inside the array to the last element.
          sizeof() returns the number of elements inside the array. As Pedro
          illustrated, the distinction is most obvious when you have an
          associative array.

          Arrays in PHP are hybrid linked-lists and hash tables. Each elements
          links to its neighbors and can simultanously be quickly accessed
          through a hash key.

          Comment

          • Daz

            #6
            Re: Return value of 'each', 'current', 'next', 'end'


            Chung Leong wrote:
            Daz wrote:
            $array[(sizeof($array)-1)] ="new value";
            should also work.

            I would imagine that end() and sizeof() work very much the same way.
            They probably both iterate through the array to the end only 1 counts
            as it goes, and the other returns the key of the last element in the
            array.
            >
            No. end() move the internal point inside the array to the last element.
            sizeof() returns the number of elements inside the array. As Pedro
            illustrated, the distinction is most obvious when you have an
            associative array.
            >
            Arrays in PHP are hybrid linked-lists and hash tables. Each elements
            links to its neighbors and can simultanously be quickly accessed
            through a hash key.
            Completely correct of course. I have no idea why I didn't think of that
            one. I tend to go out of my way whenever possible to create
            non-assiciative arrays when I can, for the reason I illistrated.
            Perhaps it's a bad habit, but it has served me well in the past under
            certain circumstances. I think this is why associative arrays
            completely slipped my mind.

            Thanks for clearing that up, and my humble apologies for any confusion
            caused to the OP.

            All the best.

            Daz.

            Comment

            Working...