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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    @jfredys 23-Mar-2011 01:07 
     I was looking for trimming all the elements in an array, I found this as the simplest solution: 
    
    <?php 
     array_walk($ids, create_function('&$val', '$val = trim($val);')); 
    ?>

    array_map? не, не слышал.

    Запостил: DrFreez, 27 Ноября 2011

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

    • показать все, что скрытоНу це проблеми самого языка раз каличесвто функций в нем ни поддается запоминанию
      Ответить
      • Я смотрю, что и русский язык Вам не нравится - тут такое количество слов, что их написание не поддаётся запоминанию.
        Ответить
      • И какчество.
        Ответить
      • Это ты типа под типичнаго салаеда начал косить?
        Ответить
        • а он контрафактный?
          хохол-полуёбок > просто полуёбок
          Ответить
    • Ну вообще array_map создаст новый массив из существующего, а array_walk нет, так что для просто обработки массива, как в данном случае, логичнее использовать array_walk.
      Ответить
    • BRICKING NEWS!
      Хоть мутабильный инплейс с сайдэффектами, но функциональный код на PHP.
      Ответить
      • > псевдофункциональный
        ftfy
        Ответить
      • КИРПИЧующие новости?
        Ответить
        • Я как увидел это в PHP, так сразу высрал тонну.
          Ответить
        • <?php 
          $ids_trimmed=array_map(trim, $ids); 
          ?>
          Так, конечно, лучше, но я все равно был приятно удивлён, что PHP'шник использует почти higher order functions. Такое далеко не у каждого программера, программирующего на не функциональных языках, встретить можно. Многие мои знакомые даже для for_each использую обычный индексный for и искренне не понимают, зачем весь этот синтаксический сахар нужен. :(
          Ответить
          • как бы там ни было, но если с массивом можно нормально работать через for, то лучше так и делать, ибо это быстрее, чем foreach
            Ответить
            • >с массивом можно нормально работать через for, то лучше так и делать, ибо это быстрее, чем foreach

              Кто тебе сказал такую глупость? Все не настолько однозначно, как ты думаешь.
              const int n=100500;
              int a[n];
              for(int i=0;i<n;++i)
                a[i]=100500;
              Такой код с индексным for превращается в следующий псевдокод, если компилятор не тятеля не мятеля:
              int i=0;
              while(i<n)
              {
                *(int*)(((UINTPTR)a)+(sizeof(a[0])*i))=100500;
                i+=1;
              };


              for(int& i : a)
                i=100500;
              А такой проход по массиву в следующий псевдокод:
              int* i=a;
              int* const e=(int*)(UINTPTR)a+n*sizeof(a[0]);
              while(i!=e)
              {
                *i=100500;
                i+=1;//i+=sizeof(a[0]);
              };
              Ну и зачем мне в говнокомпиляторе в цикле лишние умножения (или его более быстрая имитация через сдвиги), из-за индексного for, если можно обойтись без них за счет foreach? Более простые конструкции легче оптимизировать.

              А может вспомнишь, про более простое распараллеливание foreach (автораспараллеливание или засчет алгоритма parallel_for_each) на несколько ядер или на GPU в C++AMP или CUDA или ещё где?

              Хорошо, что хоть пройтись по связанному списку не предложил за индексным for.

              И вспомни, что for each синтаксис безопаснее своего for-собрата.
              Ответить
              • все эти рассуждения абсолютно бесполезны, так они вдребезги разбиваются о суровую реальность...
                Ответить
                • минусующим предлагаю сделать тест с использованием ключей и значений, а затем убиться об стену...
                  Ответить
      • FREACKING JEWS!
        Ответить
        • Лица Еврейской национальности (да ещё с таким прилагательным) тут причём?
          Ответить
          • а почему вас это интересует?
            Ответить
            • То есть это был намек на самого себя, раз отвечаете вопросом на вопрос. Надеюсь, не обидел.
              Ответить
              • зачем вы увиливаете от ответа?
                считается ли отрицание отрицания холокоста преступлением?
                Ответить
        • FUCKING NOOBS!
          Ответить
        • Oh, Shi!
          еврейское лобби меня заминусовало на ГК в разделе ПХП!
          это заговор!
          Ответить
          • > это заговор!
            У кошечки боли, у собачки боли, а у гр. <Ф.И.О.> не боли. (q)
            Ответить
            • с федота на якова, с якова всякому

              можно еще пописать на подорожник, кстати
              Ответить
            • > У кошечки боли, у собачки боли, а у гр. <Ф.И.О.> судороги. (q)
              /ftfy/
              Ответить
    • Я вот даже про array_walk не слышал, хотя сейчас не нашёл разницы между ним и array_map
      Ответить
      • array_walk просто выполняет функцию для каждого элемента, а array_map создаёт новый массив, элементами которого являются результаты применения функции.
        Первый нужен только ради побочных эффектов.
        array_walk (PHP) = mapc (CL), array_map (PHP) = mapcar (CL)
        Ответить
    • У array_walk первый аргумент - массив, второй - функция.
      У array_map первый аргумент - функция, второй - массив.
      Маразм.
      Ответить
      • Ничего необычного для PHP с его "особым" развитием.
        Ответить
      • 90% людей, избравших PHP как основное средство зарабатывания на жизнь, даже не поймут в чем суть твоих претензий
        их интересуют более глубокие материи
        Ответить
        • Да, как выяснилось, 90% людей, избравших PHP как основное средство зарабатывания на жизнь, даже не знают о существовании этих функций.
          Ответить
          • >Да, как выяснилось, 90% людей
            Где выяснилось и откуда статистика? Я, конечно, догадываюсь, что она близка к реальности, но все же? Звучит (в разделе PHP) толстовато без пруфоф.
            Ответить
      • инвариант, однако
        Ответить
    • бля а не проще
      foreach($array as &$item)
      $item = trim($item);
      Ответить
    • >create_function('&$val', '$val = trim($val);')
      Какие убогие лямбды в пхп
      Ответить
    • Естественно крики "Уууу", "Вау" и "Во даёт" были неизбежны. А у Паши глаза и вовсе на лоб чуть не полезли. Я ещё не видел его таким. Честно признаться, меня даже порадовала такая ревность с его стороны. Видимо, я ему был не безразличен. Может, не зря я всё-таки пять лет психологию зубрил; что-то я в людях смыслю! Ладно, пойдём на ту вечеринку. Думаю, ничего страшного не произойдёт.
      Ответить

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