2012-03-13 3 views
2

Можно создать дубликат:
Checking if array is multidimensional or not?Проверьте, если массив многомерный

Как проверить, является ли массив многомерный или нет в PHP?

+0

Я думаю, что это один имеет лучший «ответ», предполагая, что ОМ попал в число – Ascherer

+0

@Ascherer: Этот ответ также доступен по дублированному вопросу. Я был бы гораздо более благодарен за редактирование этого ответа с дополнительной информацией, кроме сохранения дублирующего вопроса. – animuson

+0

требует, чтобы другой плакат принимал этот ответ – Ascherer

ответ

24

Использование рассчитывать дважды, один с одним параметром, и один с рекурсивным режимом

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

COUNT (массивом, режим)

  • массивом --- требуется. Задает массив или объект для подсчета.
  • режим --- дополнительно. Определяет режим функции. Возможные значения:

    • 0 - По умолчанию. Не обнаруживает многомерные массивы (массивы внутри массивов)
    • 1 - Обнаруживает многомерных массивов

Примечание: Этот параметр был добавлен в PHP 4,2

+1

Это не работает, если массив подобен этому - ['a', 'b', []] –

1

Многомерные массивы на PHP - это просто массивы, содержащие массивы. Таким образом, простая функция для этого может быть написана как

function is_multidim_array($arr) { 
    if (!is_array($arr)) 
    return false; 
    foreach ($arr as $elm) { 
    if (!is_array($elm)) 
     return false; 
    } 
    return true; 
} 

Это будет проходить через каждый элемент $arr и проверить, является ли это массив. Если он сталкивается с элементом, который не является массивом, он вернет false. В противном случае верните true.

+1

Зависит от того, что вы считаете многомерным. Я бы рассмотрел любой массив, который содержит другой массив, который должен быть многомерным. Каждое отдельное значение не обязательно * имеет * другой массив. – animuson

+1

Я бы рассмотрел любой массив, чьи прямые дочерние элементы также были массивами, чтобы быть многомерными. – jcolebrand

+0

Это не работает для '[1, [1, 2]]'. – Antti29