Skip to content
Advertisement

Are numeric and associative arrays in PHP two different things?

This is a deeper dive into a previous question I had here: Can items in PHP associative arrays not be accessed numerically (i.e. by index)?

According to W3Schools, :

In PHP, there are three kind of arrays:

  • Numeric array – An array with a numeric index
  • Associative array – An array where each ID key is associated with a value
  • Multidimensional array – An array containing one or more arrays

But is this accurate? Each element in the array can be assigned either an index or a string as a key- so what happens when the two are mixed in the same array?

$myArray[0] = 'value1';
$myArray['one'] = 'value2';

Advertisement

Answer

All arrays in PHP are the same; they’re implemented as hash maps which associate keys to values, whatever type the keys may be.

Manual:

The indexed and associative array types are the same type in PHP, which can both contain integer and string indices.

If an array had both numeric and non-numeric indices, though, I’d still call it an associative array. The meaning of “associative” still stands.

Wikipedia:

An associative array is an abstract data type composed of a collection of unique keys and a collection of values, where each key is associated with one value (or set of values).

From the perspective of a computer programmer, an associative array can be viewed as a generalization of an array. While a regular array maps an integer key (index) to a value of arbitrary data type, an associative array’s keys can also be arbitrarily typed. In some programming languages, such as Python, the keys of an associative array do not even need to be of the same type.

For the last sentence, the same applies for PHP, as shown in your example.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement