your current index either no longer exists or is in a completly new location?
The index is a number. Numbers do not have locations, and cannot be created or destroyed, not even by the splice operator.
| [reply] |
s/index/item being references by your index/
The point wasn't about indexes being numbers or not, it was that modifying an array while iterating over it is dangerous and can lead to cases where it isn't obvious what should be done. In addition useing for or foreach isn't using indexes in an obvious manner so that when using it we seldom think about it as just using an index and counting up to the end of the array. Instead we (me at least) perceive it as moving over the actual values so that if you add or remove values I have no clear idea of what that should do to a for except I certainly expect it to break.
| [reply] [d/l] [select] |
The point wasn't about indexes being numbers or not...
Yes, I understood that you had missed this essential point. That was why I tried to bring it to your attention.
it was that modifying an array while iterating over it is dangerous
As I tried to suggest in my original message, it isn't dangerous. Sorry this wasn't clear to you.
I understand that you fear this construction because you don't understand it, and that you have a faulty mental model of the way foreach loops are processed, which leads you to an incorrect expectation of what they will do when the underlying array is modified. However, this fear is only your private emotion. It is real, but it does not extend outside of yourself. In particular, you cannot conclude from the fact of your fear that the practice is actually "dangerous".
| [reply] |