This is a discussion on Return value of 'each', 'current', 'next', 'end' within the PHP Language forums, part of the PHP Programming Forums category; These array functions: 'each', 'current', 'next', 'end' They return a reference or a value. let's say I want to ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
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. |
|
|||
|
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"; |
|
|||
|
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. |
|
|||
|
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 |
|
|||
|
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. |
|
|||
|
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. |