Ответы пользователя по тегу PHP
  • Как правильно деплоить проект на php?

    @eustatos
    Рекомендую посмотреть в сторону Docker.
    В контейнере развернуть те сервисы, которые используются.
    При деплое собираются образы сервисов в контейнере,
    отрабатывают скрипты для статики (если нужно) и миграции.
    Смена контейнера занимает доли секунды - это и будет временем простоя.
    Из известных мне это самый быстрый способ обновиться на продакш.
    Ответ написан
    Комментировать
  • Как сравнить массив и строку?

    @eustatos
    <?php
    $arr = [
        'name1' => 'apple',
        'name100' => 'jaguar'
    ];
    
    $str = '[name1]';
    
    echo finder($arr, $str);
    
    echo PHP_EOL;
    
    echo finder(
        $arr,
        '[name2][name1][name100]'
    );
    
    function finder($arr, $str) {
        $output = '';
        foreach($arr as $key=>$value) {
            $pattern = "/\[{$key}\]/";
            preg_match($pattern, $str, $matches);
            if (count($matches) > 0 ) {
                $output .= $arr[$key] . PHP_EOL;
            }
        }
        return $output;
    }
    Ответ написан
    Комментировать
  • Как объединить значения в строку?

    @eustatos
    <?php
    
    $arr =[
                '3. Граница ОГБПОУ Рязанский колледж электроники',
                '0123. диЖелезо триоксид(Сс.с./ПДКс.с.)',
                '0146. Медь оксид(Сс.с./ПДКс.с.)',
                '2930. Пыль абразивная(См.р./ОБУВ)',
         ];
    
    echo implode(',', array_slice($arr, 1));
    Ответ написан
    Комментировать
  • PHP. Подключение файла, внутри метода класса. Область видимости?

    @eustatos
    <?php
    // Demo.php
    class Demo {
        public $title = null;
        public $postData = null;
    
        public function __construct() {
          $this->title = 'Bla Bla Bla';
    
          $this->postData = (object) array(
            'title' => 'Post Title',
            'content' => 'Post content'
          );
        }
      }
     ?>
     
     <?php
     // template.php
     
     $post = new Demo;
     
     ?>
     
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title><?php echo $post->title; ?></title>
    </head>
    <body>
    
      <p><?php echo $post->postData->title; ?></p>
      <p><?php echo $post->postData->content; ?></p>
    
    </body>
    </html>
    Ответ написан
    Комментировать
  • Каким способом можно обработать массив?

    @eustatos
    <?php
    
    $data = Array(
        'date' => '12.01.2017',
        'name' => 'John'
    );
    $res = $data;
    
    array_walk(
        $res,
        function(&$value, $key) {
            $value =  $key == 'date' ? "'{$value}'" : $value;
        }
    );
    
    print_r($res);
    Ответ написан
    Комментировать
  • Как узнать операционную систему и тип устройства клиента?

    @eustatos
    ClientJS

    Установка:
    npm install clientjs
    или скопировать и подключить client.min.js
    <!-- Подключение jQuery -->
    <script src="https://yastatic.net/jquery/3.1.1/jquery.min.js"></script>
    <!-- Подключение ClientJS -->
    <script src="<path to client.min.js>"></script>

    После этого добавить на странице:
    <script>
    var client = new ClientJS();
    $('body').addClass(client.getOS());
    if (client.getDevice() != 'undefined') {
      $('body').addClass(client.getDevice());
    }
    </script>
    Ответ написан
    Комментировать
  • Как из массива у которого элементы через точку с запятой сделать другой массив? Подробнее в описании?

    @eustatos
    Если обработка нужна несколько раз. С константой только не очень получилось
    $data = Array(
        '1;Изделие из золота №001;1325;1235;15',
        '2;Изделие из золота №002;1425;1425;15',
        '3;Изделие из золота №003;1300;1100;0',
    );
    function transformData($data)
    {
        //определяем константу в виде массива с названиями для элементов массива
        define('columnName', Array(
            'ID',
            'NAME',
            'PRICE',
            'DISCOUNT_PRICE',
            'AMOUNT'
        ));
        // обходим каждый элемент массива и выполняем с ним функцию - первый параметр
        $res = array_map(
            function($columnValue)  {
                // назначаем значения ключей элеметов массива = значения первого массива,
                // значения = значения элементов второго массива
                return array_combine(
                    columnName,
                    explode(';', $columnValue) // превращаем строку в массив. ";" - делитель
                );
            },
            $data
        );
        return $res;
    }
    // где-то в коде вызываем функцию 
    print_r(transformData($data));
    Ответ написан