1. PHP / Говнокод #21913

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    //проверка на одномерность массива
    function mp_array_is_simple($array) {
        return count($array, COUNT_NORMAL)===count($array, COUNT_RECURSIVE);
    }

    Портальная система Жираф. Проверка на одномерность массива.

    Запостил: roman_gemini, 28 Декабря 2016

    Комментарии (38) RSS

    • array( array(0), array (1) )
      Ответить
    • Напишите, пожалуйста, неговнокодерскую альтернативу.
      Ответить
      • Воспользоваться ЯП.
        Ответить
      • Просто проверить что массив не содержит массивов.
        Ответить
        • 👬🏳️‍🌈
          Ответить
          • О, на макоси правильно отрендерилось.
            Ответить
            • А что должно получиться?
              Ответить
              • на винде 7 три квадратика тофу
                на ондроеде 6 три цветных глифа
                Ответить
                • фуррифокс 50.1 под линухой - три чёрных глифа
                  айпад - те же три глифа, но цветные

                  Пользователи макоси от нас что-то скрывают?
                  Ответить
                  • скрывают? любой пользователь макоси говорит об этом открыто.
                    я не видел ни одного обратного примера.
                    Ответить
                  • Там получилось два глифа: человечки и радужный флаг.
                    Ответить
                    • Прикольно. Зарождение мета-юникода.
                      Ответить
                      • Ещё осталось сделать так, чтобы из символов }|{ склеивался глиф Ж, и юникодные тексты перестанут быть машиночитаемыми (ну то есть их можно будет разобрать машиной, но сложность алгоритма нормализации возрастёт).
                        Ответить
                        • Тогда уж надо добавить ещё в юникод крючочки и палочки из прописей.
                          Ответить
                  • Firefox 50.1.0 под Win 7 x64: http://image.prntscr.com/image/7bf221841d1a4140a8da8652dac68343.png
                    Ответить
                    • И только на макоси из последних двух глифов получается радужный флаг, что как бы намекает...
                      Ответить
      • Синьёры пишут так
        function is_simple_array($arr) {
          return array_reduce($arr, function ($acc, $elem) {
            return $acc && !is_array($elem);
          }, true);
        }
        Ответить
      • [sarcasm]
        Сериализовать в JSON и посчитать скобки. Идея навеяна говнокодом:
        http://govnokod.ru/14239
        [/sarcasm]
        Ответить
        • Эскейпы не забуть обработать.
          Ответить
          • Да там для вырезания строковых значений элементов придётся изобретать нетривиальный алгоритм... Да, ещё и ключи могут оказаться такими же хитрыми строками с эскейпами, но это легко исправляется функцией array_values.
            Ответить
    • Есть проблема: в PHP по сути нет многомерных массивов. Есть кортежи полиморфные массивы, т. е. массивы, элементами которых являются произвольные объекты.

      Вот это двумерный массив:
      array(
        array(11, 12, 13),
        array(21, 22, 23),
        array(31, 32, 33)
      )


      Являются ли двумерными следующие массивы?
      $a = array(
        array(11, 12, 13),
        array(21, 22),
        array(31)
      );
      
      $b = array(
        array(11, function(){return 3.14;}, 13),
        array(21, 22, array(231, 232)),
        array(object(), 32, 'Hello, world!')
      );


      Возникает вопрос, что считать одномерным массивом. Т. е. какие типы допустимы в качестве значений.
      Ответить
      • Возможно автор "mp_array_is_simple" добавил слишком глобальное описание к функции выполняющую некую узкую проверку своих собственных структурированных данных.
        Ответить
    • А не использовать ли нам bbcode?
      Ответить

    Добавить комментарий