• Как в цикле сложить 2 значения из 2-х массивов?

    @Cels
    $arStore[]['AMOUNT'] = "2";
    $arStore[]['AMOUNT'] = "3";
    
    var_dump($arStore);
    
    // вариант 1
    echo $arStore[0]['AMOUNT'] + $arStore[1]['AMOUNT'];
    
    // вариант 2
    $sum = 0;
    foreach($arStore as $item){
        $sum += $item['AMOUNT'];
    }
    echo $sum;
    Ответ написан
    Комментировать
  • Не получается правильно сделать запрос?

    iMedved2009
    @iMedved2009
    Не люблю людей
    REGEXP_REPLACE('$1,677,000', '[^0-9]+', '');
    Ответ написан
    1 комментарий
  • Как суммировать все значения в массиве?

    ronnie85
    @ronnie85
    Fullstack Dev
    echo array_sum(array_column($arr, 'age'));
    Ответ написан
    Комментировать
  • Как запретить запуск скрипта по крону больше 1 раза?

    @Barmunk
    /usr/bin/flock -w 600 /var/tmp/myscript.lock /root/myscript.sh


    Эта комманда запустит /root/myscript.sh и создаст lock-файл для данного процесса. Пока он активен, новый вызов данного скрипта не произойдет.
    После завершения программы, блокировка файла снимается и процесс может быть снова запущен.
    Параметр -w 600 определяет время ожидания комманды flock на освобождение lock-файла.
    Для моментальной отмены выполнения процесса используйте параметр -w 0, для ожидания же бесконечно долгого времени параметр нужно опустить.


    https://pingtool.org/ru/using-flock-to-ensure-only...
    Ответ написан
    Комментировать
  • VK API: как на php, автоматически вытягивать версию api?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    версия api не просто так меняется. там могут измениться параметры как запроса так и ответа. вытягивание версии api твою программу за тебя не переделает под новое api.
    p.s. просто вынеси версию в какой-нить .env и обновляйся вручную в одном месте со всеми тестами и проверками, что все работает правильно и ничего не упало.
    Ответ написан
    4 комментария
  • Php-fpm нагружает цпу. В чем может быть проблема?

    1. Поставьте prometheus + node_exporter. Метрики очень важны, без них это только тыкать пальцем в небо
    2. Если систему нагружает php код, то поставьте xhprof и профилируйте запросы (например 1% запросов), тогда вы сможете увидеть какой именно код даёт нагрузку на процессор
    3. Если БД на том же сервере, то установите ещё и mysql_exporter
    Ответ написан
    2 комментария
  • Создаю ботов в дискорде, куда можно пойти фрилансить чтобы получать с этого +- нормальные деньги?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    иди на Odesk.
    Но шансов у тебя ноль, потому что задаёшь элементарные вопросы, на которые не можешь самостоятельно найти ответ
    Ответ написан
    3 комментария
  • Как обратиться к Kuna API через PHP file_get_contents?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если через курл работает, а через file_get_contents - нет, это значит что во втором случае не заданы в точности те же самые параметры, которые используются в первом варианте.
    Можете не благодарить.
    Ответ написан
  • Как получить четвертый элемент ассоциативного массива?

    Если за дополнительные строки кода или сэкономленную память не доплачивают, то:
    array_values($array)[3]
    Ответ написан
    Комментировать
  • Почему вычисления происходят именно так?

    Stalker_RED
    @Stalker_RED
    JS тут не при чем, это особенности вычислений с плавающей запятой, и они описаны в стандарте IEEE 754, и именно так работает большинство процессоров.
    Если вы хотите чтобы работало "согласно ожиданиям", то есть варианты:
    1. подкорректировать свои ожидания, и работать как все.
    2. использовать библиотеки для всяких длинных арифметик и прочих повышенных точностей, платя за эту точность скоростью вычислений.
    3. использовать языки, которые будут маскировать проблему, округляя числа втихаря (и рисковать нарваться на неточности уже из-за этих округлений, ага).

    https://0.30000000000000004.com/ -- тут подробно, с примерами на разных языках.
    Ответ написан
    3 комментария
  • Почему Mysql выдает ошибку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Английским по розовому же написано:
    Write falied: no space left on device
    Ответ написан
    3 комментария
  • Что наследуется в ООП? Как работает наследование?

    Adamos
    @Adamos
    Publlic / protected / private - это архитектура. Компьютеру они на хрен не нужны, они ограничивают программиста.
    И уж если программист считает, что метод должен быть публичным - значит, любой наследник должен его реализовывать. Если приватным - значит, нечего в него лезть наследникам. Если защищенный - значит, только этот класс и его наследники о том, что он существует, и должны знать.

    А если у вас сын утки плавает, как утка, но молчит, как рыба - это не он урод, а вы с планированием классов обосрались. Нет, не тот парень, от чьих классов вы наследуетесь, а именно вы. И те парни, которым надо будет поддерживать ваш код (если они знают не только о принципе Лисков, но и где вы живете) смогут очень доходчиво вам это объяснить.
    Ответ написан
    5 комментариев
  • В чем идея и как работают шаблоны?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос очень хороший.
    А ответ на него очень простой.

    Шаблоны нужны для отделения логики приложения от логики отображения.
    Разделив их, мы получим сразу кучу выгод:
    • Нормальную структуру приложения, когда вывод начинается только после того, как отработала вся логика. То есть у нас никогда не будет проблем с ошибкой headers already sent, с возвратом json-а вместо html, с выводом в page header-е тех данных, которые появляются только в процессе работы скрипта
    • Мобильность - один и тот же движок можно будет использовать на нескольких сайтах, меняя только шаблоны, но весь код оставляя одинаковым. Что поможет, в частности, вносить обновления в движок и исправлять ошибки на всех сайтах разом.
    • Разделение труда - сейчас обычно над отображением работают фронтендеры, то есть, когда бизнес-логика отделена от шаблонов, то любой фронт сможет с ней работать


    Соответственно, главное, что надо знать про шаблоны - это то, что любой вывод в РНР скрипте начинается только после того, как отработала вся бизнес-логика.
    Также важно понимать, что в самом по себе смешивании "кода и разметки" ничего ужасного нет. В шаблоне всегда будет код. Без него невозможно выводить динамический контент. Важно только - какой это код, к чему он относится? Код в шаблоне должен относиться только к самому шаблону. На первых порах новичку сложно это отличить. И это еще один плюс специализированных шаблонизаторов.

    После этого есть варианты, которые отличаются в основном удобством работы с кодом шаблона.
    Править HTML код записанный в виде РНР строки - это САМЫЙ неудобный .

    Дальше идут всякие наколенные решения, типа
    бизнес-логика
    include header
    ?>
    хтмл конкретной страницы
    <?php include footer ?>

    или чуть более продвинутый, когда шаблоны хранятся отдельно и могут вкладывться друг в друга. Сначала пишем функцию,
    function render_template($filename, array $data = [])
    {
        ob_start();
        extract($data);
        require __DIR__ . '/' . $filename;
        return ob_get_clean();
    }

    а потом в коде страницы пишем
    бизнес-логика
    ...
    $page_html = render_template('page.tpl.php', [
        'data' => $data,
    ]);
    echo render_template('main.tpl.php', [
        'navigaton' => $nav_list,
        'title' => $title,
        'page' => $page_html,
    ];

    где сами шаблоны это
    ...
            <?php foreach ($navigation as $item): ?>
                <li>
                    <a href="<?= e($item['href']); ?>"><?= e($item['title']); ?></a>
                </li>
            <?php endforeach ?>
    Важно! Любой вывод в этих шаблонах должен экранироваться в обязательном порядке (кроме очевидных случаев, когда мы выводим результат рендера).

    Ну и наконец нормальные шаблонизаторы, из которых я горячо рекомендую Twig.
    Главное, что про него надо знать - даже самые зелёные нубы осваивают его без затруднений. И настоятельно рекомендую сразу перейти на него, после того как наиграетесь с решениями на коленке.
    Ответ написан
    9 комментариев
  • При sql запросе писать с кавычками или без?

    sptm
    @sptm
    software developer / DevOps engineer
    Безопаснее и правильнее использовать PDO или MySQLi вместо устаревших mysql_ - функций.
    Ну, и с обоими вариантами нужно использовать подготовленные запросы вместо того, чтобы писать их вручную.

    Получится что-то вроде этого:
    $host = '127.0.0.1';
    $db   = 'test';
    $user = 'root';
    $pass = '';
    $charset = 'utf8';
    
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $pdo = new PDO($dsn, $user, $pass, $opt)
    
    $stmt = $pdo->prepare("SELECT last_name FROM first_table WHERE name=?");
    $stmt->execute([$name]);
    $last_name = $stmt->fetchColumn();
    Ответ написан
    4 комментария
  • Можно ли определить функцию в свойстве table у Model Laravel?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Не думаю, что удастся это реализовать в виде модели.
    Сделайте репозиторий, который будет реализовывать логику запросов и DTO, который будет держать значения полей строки таблицы.

    Впрочем, можете попробовать вот такое:
    (new BooksListHist)
        ->setTable("lst_books_hist({$IdFilter['value']})")
        ->first();

    Вы можете даже переопределить у модели метод getTable() и там дёргать параметры запроса.
    Но, имхо, это всё кривые костыли и лучше сделать репозиторий, в котором будет чётко указано что можно делать, а чего нельзя с этими данными.
    Ответ написан
    Комментировать
  • PHP ругается на ошибку в Curl, куда копать?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    $destiation_dir = realpath($_FILES['file']['tmp_name']);
    Ответ написан
    2 комментария
  • Как отфильтровать данные формата json в php файле?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    json_decode(), перебрать массив циклом, foreach, например, в другой массив, и запаковать обратно json_encode()

    UPD. Накидал пример, взял твой json, сократил и добавил offline.

    <?php
        $json = '[{"id":"00000008524","title":"Комплекс из двух исследований \"МРТ головного мозга и гипофиза\" (Комплексное МРТ головного мозга с программой ранней диагностики инсультов и МР ангиография, Комплексное МРТ гипофиза)","prefix":"","type":"online","price":330.46,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":3600},{"id":"00000008520","title":"Комплекс из двух исследований \"МРТ головного мозга и шейного отдела позвоночника\" (Комплексное МРТ головного мозга с программой ранней диагностики инсультов и МР ангиография, Комплексное МРТ шейного отдела позвоночника и спинного мозга)","prefix":"","type":"offline","price":332.29,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":3900},{"id":"00000008522","title":"Комплекс из двух исследований \"МРТ грудного и поясничного отделов позвоночника\" (Комплексное МРТ грудного отдела позвоночника и спинного мозга, Комплексное МРТ поясничного и крестцового отдела позвоночника и спинного мозга)","prefix":"","type":"online","price":253.54,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":3900},{"id":"00000008526","title":"Комплекс из двух исследований \"МРТ обоих плечевых суставов\" (Комплексное МРТ плечевого сустава, Комплексное МРТ плечевого сустава)","prefix":"","type":"offline","price":350.22,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":4800},{"id":"00000008523","title":"Комплекс из двух исследований \"МРТ поясничного отдела позвоночника, крестца и копчика\" (Комплексное МРТ поясничного и крестцового отдела позвоночника и спинного мозга, Комплексное МРТ крестца и копчика)","prefix":"","type":"online","price":301.84,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":3900},{"id":"00000008521","title":"Комплекс из двух исследований \"МРТ шейного и грудного отделов позвоночника\" (Комплексное МРТ шейного отдела позвоночника и спинного мозга, Комплексное МРТ грудного отдела позвоночника и спинного мозга)","prefix":"","type":"offline","price":268.02,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":4200},{"id":"00000008528","title":"Комплекс из двух исследований \"МРТ шейного отдела позвоночника и плечевого сустава\" (Комплексное МРТ шейного отдела позвоночника и спинного мозга, Комплексное МРТ плечевого сустава)","prefix":"","type":"online","price":329.32,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":4500},{"id":"00000007924","title":"комплексное МРТ гипофиза","prefix":"","type":"offline","price":157.57,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":1800},{"id":"00000007738","title":"комплексное МРТ головного мозга с программой ранней диагностики инсультов и МР ангиография","prefix":"","type":"online","price":182.70,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":1800},{"id":"00000007741","title":"комплексное МРТ грудного отдела позвоночника и спинного мозга","prefix":"","type":"online","price":118.44,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":2100},{"id":"00000007735","title":"комплексное МРТ коленного сустава","prefix":"","type":"online","price":163.25,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":2100},{"id":"00000007739","title":"комплексное МРТ крестца и копчика","prefix":"","type":"online","price":166.74,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":2100},{"id":"00000007737","title":"комплексное МРТ крестцово-подвздошных сочленений","prefix":"","type":"online","price":113.94,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":2400},{"id":"00000007730","title":"комплексное МРТ лучезапястного сустава","prefix":"","type":"online","price":184.50,"currency":"BYN","category_id":"00000007142","no_staff":true,"during":2400}]';
        echo 'Исходный JSON: ', $json, "<br><br>\r\n\r\n";
        
        $objects_array = json_decode($json);
        $new_objects_array = [];
        foreach($objects_array as $object){
            if($object->type != 'offline'){
                $new_objects_array[] = $object;
            }
        }
        
        $new_json = json_encode($new_objects_array, JSON_UNESCAPED_UNICODE);
        
        echo 'Перебранный JSON: ', $new_json;

    Ответ написан
    3 комментария
  • Зачем нужны трейты в php?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Трейты - это миксины, которые могут добавляться к классам в различных комбинациях. Попробуйте повторить на чистых классах
    trait Harvestable {
      function harvest() { }
    }
    trait Waterable {
      function water() { }
    }
    trait Repottable {
      function repot() { }
    };
    class Plant { }
    class Vegetable extends Plant {
      use Waterable;
      use Harvestable;
    }
    class Fruit extends Plant {
      use Waterable;
      use Harvestable;
      use Repottable;
    }
    class Succulent extends Plant {
      use Repottable;
    }
    Ответ написан
    Комментировать
  • Как найти вхождение в строку более 4 букв?

    DevMan
    @DevMan
    ну так добавьте к регулярке кол-во матчей.
    [a-z]{5,}
    Ответ написан
    Комментировать