I am sending updated version - it allow third optional argument that specify where searching should to start. With it is possible repeatably call this function.
What happened to returning an array of offsets? I think that would be both easier to use than this version as well as performing better.
I have still thinking about this idea. It needs a different function and I didn't start with this.
Implementation a optional start parameter to array_offset is cheap - and I am thinking so it can be useful for some use cases.
I see you dropped multi-dimension support, but I think that's fine.
It can be implemented later. There is no any barriers to later implementation.
-- Jim Nasby, Data Architect, Blue Treble Consulting Data in Trouble? Get it in Treble! http://BlueTreble.com