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

    +155

    1. 1
    2. 2
    3. 3
    4. 4
    foreach($arResult["ITEMS"] as $k=>$arItem){
    	list($d,$m,$y) = explode(" ",$arItem["DISPLAY_ACTIVE_FROM"]);
    	$arResult["ITEMS"][$k]["DISPLAY_ACTIVE_FROM"] = $d." ".convertRusMonth($m)." ".$y;
    }

    Преобразование даты, необходимо изменить название месяца, к пример февраль должен стать февраля. Формат месяца заранее известен.

    Запостил: Abductio, 22 Апреля 2010

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

    • И что не так?
      Ответить
      • С элементами массива можно работать по ссылке
        foreach($arResult as &$arItem)
        {
        }

        Работа с элементами по ссылке процентов на 30 быстрее, чем обращение по ключу.

        А заменять имя месяца проще, через str_replace передавая массивы значений.
        Ответить
        • А я про ссылки не знал, спасибо, полезная вещь.
          Ответить
        • 1. Попробуйте по ссылке сделать в PHP4. Это Битрикс? Он на рынке давно, когда еще была четверка.

          2. Формат даты поменяется (например, не полное название месяца, а сокращенное) и будете по всему коду искать где менять, вместо правки одной функции. Да и без изменения формата перед каждой такой заменой задавать массив преобразования совсем не красиво
          Ответить
          • Проект ориентирован на php5, битрикс скоро отменяет поддержку 4.

            Я не говорил что надо убрать функцию.Функцию можно оставить, но делать заменой, без разбиения даты и собирания обратно.
            Ответить
        • >С элементами массива можно работать по ссылке
          >foreach($arResult as &$arItem)

          Это для php4 актуально, а в 5-ке значения и так по ссылкам передаются
          Ответить
          • Эм, да ну?! То есть если просто
            foreach($arResult as $arItem)
            {
              $arItem["NAME"] = "123";
            }


            То у всех элементов изменится значение?
            Ответить
            • я немного о другом
              В php4 на каждой итерации цикла создавалась копия элемента $arItem и чтобы избежать этого, передавали значение по ссылке.

              В php5 оно сразу передается по ссылке, но копия создается уже при попытке записи в эту переменную (copy-on-write в действии).

              Ну а если в foreach нужно изменять массив, то тут - да, только по ссылке передавать.
              Ответить
        • foreach($arResult as &$arItem) -- это конечно удобно, но php4 -- это засада.
          в одном из проектом задрался переписывать такие конструкция, т.к. на хосте был только php4 и ниибёт!
          Ответить
        • <Работа с элементами по ссылке процентов на 30 быстрее, чем обращение по ключу.

          Спасибо за информацию.
          Ответить

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