За последние 24 часа нас посетили 59206 программистов и 1837 роботов. Сейчас ищут 829 программистов ...

Как программно определить является ли массив одномерным или

Тема в разделе "PHP для новичков", создана пользователем rar, 15 окт 2009.

  1. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва
    Как программно определить является ли массив одномерным или многомерным?
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    PHP:
    1. <?php
    2. $mnogo=false;
    3. foreach($arr as $var){
    4.     if (is_array($var)){
    5.         $mnogo=true;
    6.         break;
    7.     }
    8. }?>
     
  3. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  4. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва

    Пояснили бы код. Не понятно что он делает.
     
  5. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва
    По-моему, это вот так должно выглядеть:

    PHP:
    1. if ((count($arr, COUNT_RECURSIVE) - count($arr)) > 0) echo 'Массив - многомерный';
    2. else print 'Массив - одномерный';
    3.  
     
  6. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    rar
    Учи азы!
    true и так будет, если больше нуля.
     
  7. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Код считает число элементов обычным способом и рекурсивно.

    В случае многомерных массивов - это будут две разные цифры
    и $diff будет отличен от нуля.

    Т.е. сравнивать достаточно не < или >, а просто !=0 - значит многомерный
     
  8. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Apple
    то есть (-1) это false?
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    0 это false
     
  10. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    ну вот и я так думаю.
    count($array) - count($array, COUNT_RECURSIVE) - может же быть отрицательным
     
  11. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    оно будет или 0 или отрицательным :) всегда
    положительным не будет :)
     
  12. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Simpliest уже всё объяснил.
    0 - это false, всё остальное вернет true.
    Так что нет смысла сравнивать больше оно или меньше, единственное сравнение - это ноль, который говорит об идентичности.