Задать вопрос
  • Как разбить строку на нужные параметры в php?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Парсинг и вывод:
    $a = "Артем=>4,Максим.Антон=>421414,Алина=>222,";
    $a = trim($a, ', \n\r\t\v\x00');
    
    $result = call_user_func_array(
        'array_merge_recursive',
        array_map(function($str){
            [$key, $value] = explode('=>', $str);
            return [$key => $value];
        }, explode(',', $a))
    );
    
    foreach ($result as $key => $value) {
        echo $key . ' : ' . $value . "<br>\n";
    }


    Если структура получаемого массива не критична, то можно проще:

    $a = "Артем=>4,Максим.Антон=>421414,Алина=>222,";
    $a = trim($a, ', \n\r\t\v\x00');
    
    $result = array_map(fn($str) => explode('=>', $str), explode(',', $a));
    
    foreach ($result as $v) {
        echo $v[0] . ' : ' . $v[1] . "<br>\n";
    }


    По второй проблеме:
    foreach ($_GET['aServicesObj'] as $key => $value) {
        $serv .= $key.'=>'.$value.',';
    }
    
    $serv = trim($serv, ',');


    UPD
    А почему бы не использовать json?

    //foreach ($_GET['aServicesObj'] as $key => $value) {
    //    $serv .= $key.'=>'.$value.',';
    //}
    $serv = json_encode($_GET['aServicesObj']);


    и

    $result = json_decode($serv);
    
    foreach ($result as $k => $v) {
        echo $k . ' : ' . $v . "<br>\n";
    }


    Или query string

    $data = [
        'Артем' => 4,
        'Максим.Антон' => 421414,
        'Алина' => 222,
    ];
    $serv = http_build_query($data);
    
    /////////////////
    
    parse_str($serv, $result);
    
    foreach ($result as $k => $v) {
        echo $k . ' : ' . $v . "<br>\n";
    }


    Не обязательно изобретать собственные форматы данных, когда готовых куча =)
    Ответ написан
    1 комментарий
  • Как сделать выборку из одной таблицы и сгруппировать по колонке?

    erge
    @erge
    Примус починяю
    Просто джойнишь таблицу саму с собой и для каждой "таблицы" в where пишешь field_name = 'longitude'и field_name = 'latitude'

    select
        lng.object_id,
        ltd.value as latitude,
        lng.value as longitude
      from obj_table lng, obj_table ltd
      where lng.field_name = 'longitude'
        and ltd.field_name = 'latitude'
        and lng.object_id = ltd.object_id
    ;


    см. пример на dbfiddle

    UPDATE:

    еще можно так:
    select
        object_id,
        max(case field_name when 'latitude' then value else null end) as latitude,
        max(case field_name when 'longitude' then value else null end) as latitude,
        max(case field_name when 'category' then value else null end) as category
      from obj_table
      group by object_id;


    или еще...
    собрать строки в json, а затем извлечь обратно нужные поля...

    -- собираем в json:
    select
        object_id,
    	cast(replace(group_concat(json_object(field_name,value)),'},{',',') as json) json_obj
      from obj_table
      group by object_id
    ;
    
    -- или так:
    select
        object_id,
        cast(concat('{',group_concat( concat('"',field_name,'":"',value,'"') separator ',' ), '}') as json) as json_obj
      from obj_table
      group by object_id
    ;
    
    -- извлекаем поля из json:
    select
        object_id,
        json_extract(json_obj,'$.latitude') as latitude,
        json_extract(json_obj,'$.longitude') as latitude,
        json_extract(json_obj,'$.category') as category
      from (
    select
        object_id,
        cast(replace(group_concat(json_object(field_name,value)),'},{',',') as json) json_obj
      from obj_table
      group by object_id
      ) t
    ;


    см. пример на dbfiddle

    PS: JSON работает начиная с версии 5.7
    Ответ написан
    Комментировать
  • C чего новичку начинать изучение php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если на английском, то
    https://phptherightway.com/
    https://phpdelusions.net/
    https://www.youtube.com/watch?v=sVbEyFZKgqk&list=P...
    Ещё порекомендую по возможности приобрести книгу Джона Дакетта PHP&MySQL

    Ну и если есть вот прямо такое желание не превратиться в редиску позорящего (а с РНР это практически неизбежно, учитывая количество говнокода, который выдают за обучающие материалы всякие самозванцы, жулики и просто дурачки) то при сомнениях пишите сюда вопросы, мы всегда поможем разобраться и отличить зерна от плевел
    Ответ написан
    2 комментария
  • Прошивка BIOS на H410M PRO-E?

    15432
    @15432
    Системный программист ^_^
    Ну как, программатором. CH341A за 300 рубликов, если ПЗУ не съёмная, то + паяльник или клипса.
    Ответ написан
    Комментировать
  • Как сделать мини файл менеджер на php?

    beliyadm
    @beliyadm
    because open source matters
    $images = glob($dirname.'*.jpg'); - читаем файлы из папки
    Формируем какой-то список, по клику на элементу показываем его в другом блоке
    Ответ написан
    Комментировать
  • Можно ли запитать два процессора Xeon e5-2666 от одного коннектора блока питания 4+4 pin?

    hint000
    @hint000
    у админа три руки
    Всё-таки не совсем понятно, что за процессоры у вас. В официальных списках (на сайте Intel) нет такого Xeon e5-2666.
    https://ark.intel.com/content/www/ru/ru/ark/produc...
    Самые похожие по названию есть такие:
    E5-2660 (TDP 95W)
    E5-2665 (TDP 115W)
    E5-2667 (TDP 130W)
    E5-2660V2 (TDP 95W)
    E5-2667V2 (TDP 130W)
    E5-2660V3 (TDP 105W)
    E5-2667V3 (TDP 135W)
    E5-2660V4 (TDP 105W)
    E5-2667V4 (TDP 135W)
    Как видите, даже два самых холодных из них имеют TDP 95W.
    Посмотрите маркировку на вашем блоке питания, какую мощность он способен выдать по линиям 12V.
    На картинке для примера 12V * 18A = 216W Например, этого хватит впритык на два процессора TDP 95W и два жестких диска, при условии, что дискретной видеокарты нет. Если взять процессоры хотя бы с TDP 105W, то с таким БП не останется мощности даже на жесткие диски. Ну и вспомним традиционные рекомендации, что мощность БП нужно выбирать с запасом 20%..30%, здесь запаса вообще никакого, так что о стабильности системы сложно говорить. Какой БП у вас я не знаю, смотрите сами его характеристики.
    Это только с точки зрения мощности БП. Теперь о проводах. Сгореть-то ничего не сгорит, пробовать можно. Но малое количество проводов и контактов, которыми они подключены к плате может вызвать заметное падение напряжения (например, под большой нагрузкой напряжение на линии 12V упадёт до 10.5V), это может приводить к зависанию намертво (лечится только выключением питания) или к внезапному отключению компьютера. Но сгореть ничего не должно. Короче, для тестов можете попробовать подключить как есть, но всерьёз работать в таком режиме не советую.
    624590182c058884149341.png
    Ответ написан
    1 комментарий
  • Как считать права доступа? Как мне право такого вида "drwx------" перевести в числовой формат (типа 777)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    r w x | - - - | - - -
    4+2+1 | 0+0+0 | 0+0+0
        7       0       0


    r w x | r - x | r - x
    4+2+1 | 4+0+1 | 4+0+1
        7       5       5
    Ответ написан
    Комментировать
  • Какие стоит создавать интерфейсы?

    Alexandroppolus
    @Alexandroppolus
    кодир
    4 принцип SOLID предписывает создавать настолько маленькие, насколько возможно. При этом реализация может имплементировать несколько интерфейсов.

    Но смущает одно, IMove::move() для персонажа игры, скорее всего, будет принимать x,y координаты, а для файла - конечный путь.

    да. Это совершенно разные интерфейсы. Всё правильно.
    Person заимплементит IMove с координатами, а File - с путем.
    Ответ написан
    Комментировать
  • Почему не обновляется запись в бд при нажатии на кнопку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    потому что нельзя получить программу, задавая вопросы на форуме
    Учиться всё равно надо
    Надо купить или хотя бы скачать учебник Котерова, и начать осваивать программирование.
    Прочитать и усвоить оттуда, что такое SQL, как пишутся запросы
    Что такое РНР и как выполнять SQL запросы из РНР
    Как сделать так, чтобы баланс пополнился только у одного пользователя, а не у всех сразу
    Как отличать пользователей друг от друга
    Что такое база данных
    И так далее

    А если просто из головы выдумывать какие-то нелепые фантазии вместо кода, то они работать-то не будут

    Про то, как выполнять SQL запросы из РНР, можно посмотреть в этом ответе
    Но сначала надо понять, какой именно запрос мы хотим выполнить. А с этим тут тоже проблемы.
    Ответ написан
  • Как в PHP выдернуть рандомно уникальные строки из текстового файла?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $arr = file('semantic.txt');
    if(count($arr < 150)) {return false;}
    shuffle($arr);
    $res = array_slice($arr, 0, 150);
    foreach($res as $str){
      echo $str;
    }
    Ответ написан
    3 комментария
  • Как прописать классы в php коде?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Объясняем на простом примере, как в программировании можно использовать логическое мышление.
    $description = "<div id='details-2' class='col-12 col-xl-4 col-lg-12 mb-xl-5 mb-5'><div class='d-flex b-skills'><div class='height:70px;'><div class='text-bold'>";
    echo $description,"\n";
    echo addslashes($description);

    Берём наше многострадальное слово дескрипшен и выводим как есть. И - о чудо! - все кавычки на месте.
    После этого добавляем функцию добавления обратных слешей. И видим, что они добавились к кавычкам.
    Из чего мы можем сделать логический вывод о том, что между созданием многострадальной переменной дескрипшен и выводом её содержимого на экран, присутствует некий говнокод, который по какой-то неведомой причине добавляет к ней обратные слеши.

    И откройте уже для себя волшебные клавиши Ctrl-U
    При проблемах с генерацией хтмл, надо смотреть ровно то что нагенерил ваш код, а не те красявости, которые старательно подрисовывает к нему инспектор.
    Ответ написан
    5 комментариев
  • Как вставить определенное слово в строку в необходимом мне месте?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Не так почти в каждой строчке.

    Во-первых, зачем вам структура из четырех строк? Зачем вам массив из нее на 1000 элементов.

    Вот это вообще что за хрень?
    for (i; i < 1; i++) {

    Вас этот цикл из одной итерации нисколько не напрягает?

    Далее, в задании четко сказано
    Разработать функцию, которая вставляет в предложение заданное слово. Новое слово должно стать в предложении n-м (n задается как третий параметр функции)


    Т.е. вам надо взять одну функцию, и вызвать ее 3 раза с передавая туда то 1, то 2, то 5, а не писать 3 Poshuk'а.

    Далее, во всех ваших функциях вы обращаетесь к list[] по разным индексам, но у вас только один первый элемент массива вводится (опять, нахрена вам целый массив структур, если в задаче дано ровно 3 строки и одно слово?!)

    Ну и последнее, логика искомой функции должна быть такой: Проходимся по переданной строке, считатем, сколько пробелов встретили. Как только встречаем пробел с заданным номером, сдвигаем все символы за этим пробелом вправо на длину вставляемого слова, потом копируем слово в пустое место.

    Чтобы сдвигать символы в строке вам надо сначала найти ее длину, потом с длина+k циклом пройтись назад до крайнего сдвигаемого индекса и присваивать текущему символу значение символа по индексу i-k.
    Ответ написан
    Комментировать
  • Как одной строчкой кода решить задачу (год|года|лет)?

    @galaxy
    return "$n " . ( ($n / 10) % 10 == 1 || $n % 10 > 4 || $n % 10 == 0 ? 'лет' : ($n % 10 == 1 ? 'год' : 'года') );

    детский сад...
    Ответ написан
    Комментировать
  • Как правильно проверять возраст на php?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    <?php
    $birthDate = '20.02.2010';
    if (time() < strtotime('+18 years', strtotime($birthDate))) {
        echo 'меньше 18';
    } else {
        echo 'больше 18';
    }
    Ответ написан
    1 комментарий
  • Где найти хардварные айди железа?

    hint000
    @hint000
    у админа три руки
    команда sudo lshw (в Линуксе)
    вывод команды выглядит примерно так (сюда под спойлер не удалось вставить, т.к. ограничение в 10 000 символов):
    https://controlc.com/91b1e74d
    Ответ написан
    Комментировать
  • Как вообще загрузить изображение в Laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Обрати внимание на строку -erorr: 6 в дампе. Найди это значение в соответствующем разделе документации PHP. Подумай.
    Ответ написан
    5 комментариев
  • Несколько ключевых слов redbeanphp?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ключевые слова red bean: говнокод, лохи, самозванец с ютубы
    Ответ написан
    2 комментария
  • Как выбрать 3 записи с максимальным значение PostgreSQL?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Отсортировать и указать лимит выдачи. Буквально. А в чем вопрос? Что у вас не получилось?
    Ответ написан
    7 комментариев
  • Как изменить определенные строки по id в mysql?

    Immortal_pony
    @Immortal_pony Куратор тега MySQL
    ... вот ты прямо так на английском и пиши
    где = WHERE
    поле id = id
    от 1 до 10 000 = >=1 AND id <= 10000

    Теперь собирай всё вместе:
    WHERE id >=1 AND id <= 10000

    А теперь добавляй это условие к своему запросу:
    UPDATE table SET field=field*2 WHERE id >=1 AND id <= 10000
    Ответ написан
    4 комментария