• Как передать в функцию аргумент по ключу массива без warning?

    @WitER
    Стоит начать с того, что в вашей функции $item всегда будет задана - ведь вы её объявили вместе с функцией - читай аргументы функций.
    Если вам нужно проверить существует-ли ключ массива(в том числе и вложенный) и не пуст ли он, используйте empty($arrName['first']['second']), но учтите, что эта функция вернет true если значение элемента будет равно нулю.
    Если вам нужно просто узнать, что элемент массива существует и (как ниже заметили, не null), тогда просто: isset($arrName['first']['second']).

    Спасибо, Сергей delphinpro за замечание!
    Для проверки существования ключа массива действительно можно использовать array_key_exists('first', $arrName), заметьте эта функция не работает с многоуровневыми массивами. Для проверки существования вложенных ключей, которые могут принимать значения null || 0 || '' лучше использовать другой подход, возможно комбинировать этот метод с фильтрацией.
    Если нужно отфильтровать массив от пустых значений, то можно использовать array_filter.
    Ответ написан
    2 комментария
  • Как правильно сделать запрос через php curl к вб?

    @WitER
    Для начала вам стоит правильно подготовить данные о файле, например(у вас же в $photo - путь к файлу хранится?):
    $filePhoto = new \CURLFile($photo, 'image/png', 'photo_' . $photo_number . '.png');


    После чего в опциях указать:
    $options = [
    // ...
        CURLOPT_POSTFIELDS => ['uploadfile' => $filePhoto]
    ];
    Ответ написан
    6 комментариев
  • Как можно реализовать связь one to many в CodeIgniter?

    @WitER
    В базе у Codeigniter отсутствуют привычные для пользователей orm связи и orm как таковая.
    Для получения связанных записей вы должны реализовать это поведение на уровне энтити или модели(для фильтрации списка пользователей по ролям, например).
    Так же вы можете воспользоваться пакетом tatter/relations.
    Ответ написан
    Комментировать
  • Как решить php выдает ошибку при подключении к БД?

    @WitER
    mysqli_connect( 'localhost', 'root', '', 'dargin-language');

    Читайте документацию, пожалуйста.
    Ответ написан
    Комментировать
  • Как довести созданную БД до рабочего состояния?

    @WitER
    Исходя из того, что вы ожидаете получить готовое решение в виде приложения использующего базу данных, то у вас два пути:
    - отказаться от mysql и использовать MS Access, в котором вы сделаете нужную вам структуру бд и формочек
    - реализовать приложение на любом яп подходящем для десктоп приложений, который будет взаимодействовать с вашей бд mysql, но помимо самого приложения вам понадобиться и сервер бд, если не планируется доступа к данным по сети - больше подойдет sqlite.
    Ответ написан
    Комментировать
  • Как подключить модуль для sqlite php?

    @WitER
    Чтобы подключиться к SQLite используя PDO вам достаточно указать правильный dsn.
    $db = new \PDO('sqlite:_PATH_TO_FILE_', '', '', array(
        \PDO::ATTR_EMULATE_PREPARES => false,
        \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC
    ));

    Где _PATH_TO_FILE_ - путь к вашему файлу бд.
    Не забудьте убедиться, что у вас должны быть права на запись в директорию с бд.

    Так же, можете посмотреть примеры тут
    Ответ написан
    Комментировать
  • Где лучше установить CI (в корневой папке или его под=директории)?

    @WitER
    Если мы говорим об актуальном codeigniter 4, то корневым каталогом для вашего хоста должен быть его каталог public.
    Лучше всего настройте отдельный виртуальный хост и укажите его document_root- ом каталог public из установленной версии CI.
    Пример конфига для Apache можете найти тут
    Ответ написан
    Комментировать
  • Как пройти авторизацию в steam с помощью GuzzleHttp?

    @WitER
    Если вам нужна авторизация на своём сайте через Стим - вам нужно использовать его openid.
    Если же вы хотите прикинуться пользователем, который авторизовался в Стим - то как минимум передать в форму пару логин-пароль недостаточно.
    Стим использует rsa шифрование данных формы до передачи запроса.
    Если хотите это сделать - вэлком в реверс-инжиринг процесса авторизации, но не забывайте, что это нарушение их правил.
    Ответ написан
    Комментировать
  • Как сформировать массив PHP?

    @WitER
    Конвертировать пришедший json в удобный для вас формат - объект/массив, после чего пройтись циклом/array_map-ом и собрать нужный вам массив.
    Где, если в ответе присутствуют разные realizationreport_id - они будут ключами массивов в которые вы агрегируете данные из каждой записи по этому полю, или просто агрегируете данные в простой массив. С учётом значений поля doc_type_name, конечно.
    Ответ написан
  • Как реализовать вместо рандома очередь, 1, 2, 3, 4 и т.д.?

    @WitER
    Как вам уже писали - вам нужно хранить последний использованный ключ между запросами. В случае с тг ботом - вам подойдёт любое сервер-сайд решение: БД, файлы(но лучше не нужно), key-value хранилища.
    Логика простая:
    - попытались получить последний ключ для чата(или глобально)
    - ключа нет - используем первый доступный
    - ключ есть - увеличиваем его до следующего, проверяем существование в массиве и выходы за границы
    - ключ вышел за нижнюю/верхнюю границу - меняем его значение на нижнюю границу
    - элемент существует - выводим
    - сохраняем ключ как последний использованный
    Ответ написан
    Комментировать
  • Как получить страничку сервера подождав (обойти) CloudFlare Checking if the site connection is secure?

    @WitER
    Воспользуйтесь selenium, и не придётся изобретать велосипед
    Ответ написан
    Комментировать
  • Как правильно объединить две таблицы?

    @WitER
    Как минимум у вас должна быть ещё одна таблица, которая связывает товар со значением характеристики.
    Если же вам нужно выводить характеристики на странице товара - получайте их отдельным запросом для нужного товара.
    Если вам нужно осуществлять фильтрацию - джойните таблицу значений характеристик к товару и фильтруйте результат.
    Ответ написан
    1 комментарий
  • Почему не доступно подключение к WebSocket через Ngrok?

    @WitER
    SSL сертификат должен быть на стороне ngrok, т.к. подключение по wss идёт непосредственно к нему, а далее он проксирует соединение на ваш скрипт. Ngrok не перенаправляет запрос, а именно проксирует.
    Ответ написан
    Комментировать
  • Как отправить сообщение только одному пользователю с помощью WebSocket?

    @WitER
    Оперировать с идентификаторами соединений.
    Так, например, пользователь А подключается к серверу, сервер его идентифицирует именно как пользователя А и хранит идентификатор его соединения. То же самое происходит и с клиентом Б.
    Когда клиент Б отправляет сообщение, предназначенное клиенту А - сервер направляет это сообщение не в широковещательный канал, а в конкретный коннект.
    Ответ написан
    2 комментария
  • Как правильно организовать выборку в коллекции / N+1 проблема?

    @WitER
    Эта проблема подробно раскрывалась аж 2 года назад - здесь, и это первая ссылка в гугле по запросу: "laravel n+1".
    Ответ написан
    Комментировать