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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    foreach ($relations as $relation) {
                $structured_relations[$relation['status_name']][] = [
                    'id' => $relation['sl_id'],
                    'status' => $relation['status'],
                    'status_name' => $relation['status_name'],
                    'parent' => $relation['parent'],
                    'parent_name' => $relation['parent_name'],
                    'customer' => $relation['customer'],
                    'provider' => $relation['provider'],
                    'admin' => $relation['admin'],
                ];
            }
            return $structured_relations;

    Просто пускай полежит здесь ;)

    Запостил: kors, 04 Сентября 2015

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

    • нжорм
      Ответить
    • Вполне себе норм.
      В $structured_relations загоняются только нужные поля, а не вся строка из (?)базы
      Ответить
    • Ну что же вы так ))

      foreach ($relations as $k => $relation) {
      $structured_relations[$k] = $relation;
      $structured_relations[$k]['id'] = $relation['sl_id'];
      }
      return $structured_relations;

      В Селекте можно сразу указать какие поля необходимо получить. Если большое количество полей, это может отрицательно повлиять на скорость при большом объёме данных.

      Код не мой, а новичка, который мне пришлось форматировать и оптимизировать.
      Здесь строчка моя 'id' => $relation['sl_id'], которой я считаю ошибочной и в итоге код должен получится просто

      foreach ($relations as $relation) {
      $structured_relations[] = $relation;
      }
      return $structured_relations;
      Ответить
      • 1. в $relations может быть 1000 лишних полей, которые в $structured_relations не нужны
        2. перед foreach добавить как минимум if ($relations) ...
        3. перед foreach можно добавить ещё $structured_relations = array();

        кроме всего это итоговая структура группируется по полю $relation['status_name'], чего нет в твоём варианте!

        4. т.к. поле status_name будет в итоговой структуре ключом, то в поля массива его можно не вносить!
        Ответить
        • 1) Про select я уже писал
          "В Селекте можно сразу указать какие поля необходимо получить."
          2,3) Согласен, полностью. Это есть, просто не стал приводить
          4) Дублирование код, согласен
          Ответить
          • всё равно итоговая структура группируется по полю $relation['status_name'], чего нет в твоём варианте!

            Плюс, возможно, может возникнуть ситуация, когда в $structured_relations поля будут отличаться по названию от из аналогов в $relations (в базе) + могут быть всякие их трансформации перед выводом.

            Так что имхо там там код. Не говнокод.
            Ответить
          • Кстати, если вопрос лишь в том, чтобы сократить кол-во кода, тогда уже вот так:

            foreach ($relations as $relation) {
            $relation['id'] = $relation['sl_id'];
            $structured_relations[] = $relation;
            }
            return $structured_relations;

            // типа без $k
            Ответить
            • вообще говоря можно сократить это:
              foreach ($relations as $relation) {
              $structured_relations[] = $relation;
              }
              return $structured_relations;

              до вот этого: return $relations;
              )) Если конечно выше ничего там не делается с $structured_relations)
              Ответить
              • вы извратили этот весь говнокод до уровня "супер говнокод" так как:
                1. группировка по полю status_name теперь вообще не производится;
                2. поле sl_id теперь вообще не принимает значение поля id.
                3. харэ выёживаться - изначальный код был вполне нормальным.... немного кривым, но вполне рабочим
                Ответить

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