Php – Checking if array is multidimensional or not

arrayselementloopsmultidimensional-arrayphp

  1. What is the most efficient way to check if an array is a flat array
    of primitive values
    or if it is a multidimensional array?
  2. Is there any way to do this without actually looping through an
    array and running is_array() on each of its elements?

Best Solution

Use count() twice; one time in default mode and one time in recursive mode. If the values match, the array is not multidimensional, as a multidimensional array would have a higher recursive count.

if (count($array) == count($array, COUNT_RECURSIVE)) 
{
  echo 'array is not multidimensional';
}
else
{
  echo 'array is multidimensional';
}

This option second value mode was added in PHP 4.2.0. From the PHP Docs:

If the optional mode parameter is set to COUNT_RECURSIVE (or 1), count() will recursively count the array. This is particularly useful for counting all the elements of a multidimensional array. count() does not detect infinite recursion.

However this method does not detect array(array()).