On Mon, Mar 14, 2011 at 09:34:33PM +0100, Peter Lind wrote:

> On 14 March 2011 21:31, Paul M Foster <pa...@quillandmouse.com> wrote:
> > Here's what I need to do: I have an indexed array, from which I need to
> > delete elements in the middle. Once completed, the indexes should be
> > numerically in sequence, as they were when I first encountered the
> > array. That is:
> >
> > Before:
> > $arr = array(0 => 5, 1 => 6, 2 => 7, 3 => 8, 4 => 9, 5 => 10);
> >
> > After:
> > $arr = array(0 => 5, 1 => 6, 2 => 9, 3 => 10);
> >
> >
> > I've tried:
> >
> > 1) Using for() with unset(). Elements are deleted, but the indexes are
> > no longer sequential.
> >
> > 2) Using for() with array_splice(). Understandably, deletes certain
> > elements but not others.
> >
> > 3) Using foreach() with referenced array elements. Neither unset() nor
> > array_splice() appear to have any effect on the array at all.
> >
> > 4) while() loop using current() and the like. But these array functions
> > return values, not references, so the array isn't actually modified.
> >
> > 5) array_walk() with unset() array_splice(). No effect on the array.
> >
> > Anyone know how to do this, or know of a reference on how to?
> >
> 
> Remove the elements, then use sort().

I've given a simplified example. The actual target array is
multi-dimensional. Sort() won't work in a case like that, as far as I
know. Moreover, I don't want the array sorted based on the element
values.

Paul

-- 
Paul M. Foster
http://noferblatz.com
http://quillandmouse.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to