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

    +159

    1. 1
    if (!is_array($array)) {$array = array($array)}

    Запостил: partizan22, 14 Апреля 2013

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

    • Надо было писать while.
      Ответить
    • а я вот в js как то делал такое. нужно было передавать именно массив из элементов, даже если элемент один единственный (jQUery работает по тому же принципу). Придумалась такая проверка, если аргумент не массив, тогда что нам мешает обернуть его в массив и передать как ни в чем не бывало?
      Ответить
    • Ну да, ну демоническая типизация. Пердача аргументов, хуле.
      function foo ( $array=array() ) {
      if (!is_array($array)) $array = (array)$array;
      // ...
      }
      Ответить
      • function foo( $arg=array() ) {
        echo $arg[0];
        }
        
        $x = (object) array("a"=>1, "b"=>2);
        foo($x); // Fatal error:  Cannot use object of type stdClass as array

        Хуле...
        Ответить
    • Всегда так делаю :3 В чём говнокод то?
      Ответить
      • Проверка не нужна:
        $array = (array)$array;
        Ответить
        • Этот код не эквивалентен.
          $ php -r '$a = new StdClass(); $a->p = 123; var_export((array) $a);'
          array (
            'p' => 123,
          )
          Ответить
          • Не знал. Тогда в чём говнокод? Кроме отсутствующей точки с запятой, что в общем-то просто опечатка.
            Ответить
            • Лично мне забавно видеть большое количество упоминаний слова "array" в таком маленьком отрывке кода. Ну и название $array для переменной не очень удачно выбрано. В целом больше ничего плохого не вижу.
              Ответить
    • Все проще.
      Теперь можно функцию вызывать так:
      foo(['bar', 'baz']) или foo(['bar']) или так foo('bar')
      Ответить

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