|
Posted by ZeldorBlat on 05/19/07 02:13
On May 18, 9:05 pm, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> ZeldorBlat wrote:
> > On May 18, 11:40 am, "Jon Slaughter" <Jon_Slaugh...@Hotmail.com>
> > wrote:
> >> "ZeldorBlat" <zeldorb...@gmail.com> wrote in message
>
> >>news:1179501018.125313.63600@p77g2000hsh.googlegroups.com...
>
> >>> On May 18, 11:05 am, "Jon Slaughter" <Jon_Slaugh...@Hotmail.com>
> >>> wrote:
> >>>> Is it safe to remove elements from an array that foreach is working on?
> >>>> (normally this is not the case but not sure in php) If so is there an
> >>>> efficient way to handle it? (I could add the indexes to a temp array and
> >>>> delete afterwards if necessary but since I'm actually working in a nested
> >>>> situation this could get a little messy. I guess I could set there values
> >>>> to
> >>>> null and remove them afterwards?
> >>>> Thanks,
> >>>> Jon
> >>> Why don't you try it and see what happens?
> >> Um... cause I did... but that doesn't mean much. Just cause someone tries
> >> something doesn't prove that it will always work like that...
>
> >> got any more bright ideas?
>
> >> Or is the question to hard for you?
>
> > No, the question is not to (sic) hard for me. But, as you've already
> > discovered, it isn't that difficult to test, either.
>
> Sorry, I agree with Jon on this one.
>
> I make it a habit not to delete entries in a foreach() loop. Rather, I
> build an array of keys I want to delete, and after the loop ends, delete
> the entries from my delete array.
>
> I don't know whether an operation like this is guaranteed to work in PHP
> - I've never seen it documented, so I suspect not. And just because it
> works in one release under a certain set of conditions is not a
> guarantee it will work on another release or under different conditions.
>
> --
> ==================
> Remove the "x" from my email address
> Jerry Stuckle
> JDS Computer Training Corp.
> jstuck...@attglobal.net
> ==================
I never said I disagreed with him -- in fact I, too, generally don't
delete elements inside a foreach. However, I will say that when I
have done it things seem to work as expected. I guess it all comes
down to whether or not the array's internal pointer is modified when
you unset the element it's pointing to (I suspect it isn't).
I see a lot of questions in these newsgroups that look something like,
"What happens if I do X?" or "In PHP is this code valid?" The point I
was trying to make (and apparently Jon took offense to it) was that
it's easy enough to just try it and see what happens. Software is
just that: soft. It can be changed easily enough :)
Navigation:
[Reply to this message]
|