title: What data-structure does the PHP array() constructor create?
body: <p>While I find most of PHP criticism pedantic at best, lack of a clear datatructures line up is becoming a practical limitation on my everyday job.
  The array() constructor creates data-structures that claim to do everything, but in reality I end up lacking relevant information that I would need in order to use it efficiently.
  Specifically, I have no idea of what data-structure it really is. Is it a list? What kind of list? An array of pointers? A btree? An hashmap?</p>
  
  <p>How is lookup performed? Since the same datastructure has numerical and 'associative' lookup, I assume cannot perform lookups based on offset like one can do, say, in a C array.</p>
  
  <p>For small amounts of data, I naturally do not care much about such performance optimizations. However, the software I work on it is started to be used in scenarios where moderately big data structures slow things down a bit.</p>
  
  <p>Moreover, is it possible to explicitly create each mentioned datastructure? How?</p>