On 14 March 2011 22:10, Paul M Foster <paulf@xxxxxxxxxxxxxxxxx> wrote: > On Mon, Mar 14, 2011 at 09:34:33PM +0100, Peter Lind wrote: > >> On 14 March 2011 21:31, Paul M Foster <paulf@xxxxxxxxxxxxxxxxx> 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. Ahh, I see - you wanted me to guess at the actual circumstances of the case instead of provide an answer to the example you posted. My bad. -- <hype> WWW: plphp.dk / plind.dk LinkedIn: plind BeWelcome/Couchsurfing: Fake51 Twitter: kafe15 </hype> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php