Задать вопрос
Ответы пользователя по тегу PHP
  • Как в выборке sql обратиться к предыдущей записи?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    ORDER BY date DESC 
    LIMIT 2

    Получите последнюю и предпоследнюю записи.
    Ответ написан
    Комментировать
  • Почему переменная не перезаписывается?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    private string $requestUri = '/';
    ...
    if ($this->requestUri !== '/') {

    То есть, при инициализации экземпляра вы записываете в requestUri слэш, а перезаписываете значение только если там не слэш. Соответственно, условие всегда ложно и тело условия не выполняется.
    Ответ написан
    Комментировать
  • Как двумерный массив записать в одномерный php?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $result = array_merge(
        $arrayOne,
        array_combine(
            array_column($arrayTwo, 'Field'),
            array_column($arrayTwo, 'info'),
        ),
    );
    Ответ написан
    Комментировать
  • Как правильно получить токен для метода photos.getWallUploadServer VK?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Всё есть в документации. При запросе ключа надо указывать нужные права. Они указаны в описании метода.
    - scope=wall
    + scope=wall photos
    Ответ написан
  • Как добавить в скрипт заявки тему для письма?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если используете функцию mail, то должны сами озаботиться соблюдением всех стандартов. В частности, все заголовки, в том числе и тема письма, должны быть закодированы согласно RFC 2047. В заголовках допускаются только символы из ASCII-128.
    $subject = '=?UTF-8?B?' . base64_encode($pagetitle) . '?=';

    А лучше используйте PHPMailer, он сам приведёт всё в нормальный вид.
    Ответ написан
    4 комментария
  • Как установить timezone в php.ini?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    php.ini
    [Date]
    ; Defines the default timezone used by the date functions
    ; https://php.net/date.timezone
    ;date.timezone =
    Ответ написан
  • Как получить родительскую ноду PHPSTAN?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Первый же вопрос в FAQ:

    How can the parent of a node be obtained?
    -----
    The AST does not store parent nodes by default. However, the `ParentConnectingVisitor` can be used to achieve this:
    ...
    Ответ написан
    Комментировать
  • Как вывести данные из связанной таблицы?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Изучить хотя-бы основы SQL
    Конкретно для данного случая - слово JOIN.
    Ответ написан
    9 комментариев
  • Определение значений передаваемой в функцию переменной типа массив?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Можно через наследование ArrayObject, при этом сохранится доступ как к массиву и можно итерировать по объекту. Однократный перебор ключей массива всё равно понадобится, чтобы оставить только строковые ключи.
    declare(strict_types=1);
    
    abstract class StrictArray extends ArrayObject
    {
        final public function __construct(array $array = []) {
            $this->checkArray(
                ...array_filter(
                    $array,
                    static fn(int|string $key): bool => is_string($key),
                    ARRAY_FILTER_USE_KEY,
                ),
            );
            parent::__construct(array: $array);
        }
    
        #[Override]
        public function append(mixed $value): void
        {
            // Заглушка для запрета добавления значения в массив
        }
    
        #[Override]
        public function offsetSet(mixed $key, mixed $value): void
        {
            // Заглушка для запрета установки значения по ключу
        }
    }
    
    final class Parameters extends StrictArray
    {
        protected function checkArray(
            int $keyInt,
            string $keyString,
            bool $keyBool = false,
            ?DateTimeImmutable $keyDate= null,
        ): void {
        }
    }
    
    $parameters = new Parameters([
        'keyInt' => 1,
        'keyDate' => new DateTimeImmutable('now'),
        'keyBool' => true,
        'keyString' => 'abc'
    ]);

    Не очень красиво, что в StrictArray не определяется сигнатура для checkArray, но PHP не умеет перегружать методы с разными наборами параметров.
    Ответ написан
    Комментировать
  • Кривая работа функции date php?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Неделя начинается с понедельника и идентифицируется своим порядковым номером в году. Первой календарной неделей года считают первую неделю, содержащую первый четверг текущего года. Последней календарной неделей календарного года считают неделю, которая предшествует первой календарной неделе следующего года. ISO 8601.
    Соответственно, 2024-12-29 - воскресенье, последний день последней, 52-й недели года.
    2024-12-30 - понедельник, входящий в неделю, где четвергом является 2025-01-02, то есть в первую неделю 2025 года.
    Ответ написан
    6 комментариев
  • Подключение класса внутри класса: Правильно ли я делаю?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В целом, подключение классов через include/require уже устарело. Как правило, используется автозагрузка классов по стандарту PSR4, самостоятельная (spl_autoload_register) или через composer.
    Но если оставаться в легаси, то я бы вынес все подключения зависимостей через require_once в начало файлов.
    Ответ написан
    8 комментариев
  • Как заменить текст в файле .csv с помощью PHP?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Угу. Сначала понаставим @, чтобы скрыть все ошибки, а потом будем голову ломать, почему ничего не работает и ошибок не показывает.

    А вообще, это делается в одну строку.
    file_put_contents($outfilename, str_replace('Российский рубль', 'RUB', file_get_contents($infilename)));
    Ответ написан
    Комментировать
  • Как сформировать список по вложенному массиву рекурсивной функцией?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ну, будем извращаться.
    <?php
    function formatList(array $list): string
    {
        $result = '';
        foreach ($list as $key => $value) {
            if (!is_array($value)) {
                $result .= "<li>{$key} => {$value}</li>";
                continue;
            }
            $result .= "<li>{$key} =></li>";
            foreach ($value as $item) {
                $result .= formatList($item);
            }
        }
        if ((debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1]['function'] ?? '') !== 'formatList') {
            $result = "<ul>{$result}</ul>";
        }
        return $result;
    }
    print formatList($arr);

    <ul><li>id => 1</li><li>name => item1</li><li>items =></li><li>id => 2</li><li>name => item2</li><li>items =></li><li>id => 3</li><li>name => item3</li><li>items =></li><li>id => 4</li><li>name => item4</li><li>items =></li><li>id => 5</li><li>name => item5</li><li>items =></li><li>id => 6</li><li>name => item6</li><li>items =></li></ul>
    Ответ написан
    2 комментария
  • Firefox больше не отправляет в HTTP_ACCEPT image/webp?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Специально обновил панду, проверил. У меня этот заголовок отправляет:
    скрин
    6740fab113240252456021.png

    Может у вас запрос построен так, что браузер не понимает, что запрашивается картинка?
    Ответ написан
  • Переподключение PHP к MySQL как правильно организовать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ловить исключение, если ошибка 2006, то переподключаться и повторять запрос. Можно организовать в своём враппере поверх PDO или mysqli.
    Менее универсальный способ - увеличить таймаут для сессии
    SET session wait_timeout=28800
    SET session interactive_timeout=28800
    Ответ написан
    4 комментария
  • Как получить заголовок Сontent-Disposition?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вам возвращается страница с требованием авторизации. Доступ к файлу возможен только по логину/паролю.
    К тому же, get_headers() полностью скачивает данные и только потом возвращает заголовки.
    Ответ написан
    2 комментария
  • Как отправить файл с данными с одного сервера на другой?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    CURLFile или curl_file_create()
    Ответ написан
    1 комментарий
  • Как изменить кодирование URL ссылок сайта?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    %B9 - это код символа № в кодировке Windows-1251.
    Похоже, что имена файлов на диске у вас сохранены именно в ней. Надо перекодировать имена в UTF-8.
    Ответ написан
    Комментировать
  • Почему не отправляет формы в телеграм?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Кажинный раз одно и то же.
    Для начала выберем самый извращённый способ отправки HTTPs-запроса через fopen.
    Затем вместо нормальной обработки ошибки выведем одно слово Error.
    Ну и напоследок будем гадать что бы это слово могло за собой скрывать.

    Перепишите запрос на curl, включите вывод ошибок, выводите полностью пришедший от сервера ответ и не гадайте по одному слову.
    Ответ написан
    Комментировать
  • Ошибка в SQL запросе WHEN THEN как исправить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Судя по обрывкам кода, первый фрагмент выполняется в цикле.
    Тогда по тексту ошибки видно, что этот цикл ни разу не выполнялся и в переменных пустые строки.
    Ответ написан