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

    /https?:\/\/(?!mysite.com)\S+\.(png|jpe?g|gif)/
    Ответ написан
    Комментировать
  • Как сгруппировать массив по его значениям?

    1. Создаете выходной массив.
    2. Определяетесь с тем, что будет ключом в нем. Это может быть, например, особым образом сформированная строка из элементов очередного элемента входного массива (например, «9:00 — 19:00») или сериализованный очередной элемент.
    3. Пробегаете в цикле по входному. Каждый очередной элемент входного состоит из ключа (день недели) и значения (массив с двумя значениями времени). Так вот, из значения элемента входного массива формируйте ключ выходного (как описано в п.2).
    4. В элемент выходного массива по сформированному ключу добавляете ключ элемента входного.

    То есть выходной массив будет примерно такой:
    Array (
    [9:00 — 19:00] => Array ( [0] => Понедельник [1] => Вторник … )
    [10:00 — 16:00] => Array ( [0] => Воскресенье ) )


    А дальше уже, исходя из требований, формировать выходные строки с перечислениями дней или с формированием диапазонов.
    Ответ написан
    Комментировать
  • Правильно ли написан php-код?

    Если комментарии без пагинации, то вроде ничего лишнего. А от хостера такого надо уходить. Либо к другому хостеру, если ничего нагруженного не держите, и он просто наглеет, либо на сервер с мощностями, соответствующими требованиям.
    Ответ написан
  • Как определить изображение?

    В items->attachments лежит массив объектов. У каждого из объектов поле type, имеющее значение, например, audio или photo в зависимости от типа. По этому значению однозначно определяется тип и, соответственно, требуемый тег. Проблемы никакой же.
    Ответ написан
    Комментировать
  • Регулярные выражения, выцепить целые числа?

    /(?<![\.\d])\d+(?![\.\d])/
    Используется негативный просмотр вперед и негативный просмотр назад для исключения дробных чисел (если перед числом или после него стоит точка, оно не выбирается). Единственный минус — из строки типа "afdgh35.as" не выберет число 35. Но необходимость усложнять регулярное выражение зависит от задачи.
    Ответ написан
    Комментировать
  • Как посчитать сумму диагоналей в матрице 30х30?

    И в чем проблема? Два цикла с i от 0 до 29. Допустим, матрица А. В первом цикле суммируете A[i][i]. Во втором — A[i][29-i].
    Ответ написан
    Комментировать
  • Как получить символ из числа?

    Используйте деление по модулю на 10 ($k % 10). В цикле, соответственно, если заранее неизвестна длина исходного числа.

    Вообще, нужно смотреть задачу. Возможно, она имеет более подходящее решение.

    Я после эти значения подставляю в массив, на места ключей, а соответственно php сам их переводит в int.

    Я бы не был так уверен. Вполне возможно, что на выходе получается ассоциативный массив. Но сомневаюсь, что вам это принципиально.
    Ответ написан
    Комментировать
  • Нормально ли такое тестовое задание?

    Во-первых, сама задача не выглядит как развод. Она достаточно проста, и у понимающего человека займет не так много времени (как любое тестовое задание).

    Во-вторых, работодатель предлагает продемонстрировать работу на «своей территории». То есть не требует от вас код. Код он уже видел, теперь его интересует функциональность в пределах его тестового задания.
    Ответ написан
    Комментировать
  • Как добавить исключение в цикл?

    Использовать условие — самое простое.
    Можно сделать два цикла (1—4 и 6—10). Чтобы не дублировать код, тело цикла выделить в функцию, которой $i передавать.
    Можно сформировать массив, содержащий все нужные числа и использовать foreach().
    Но нужно ли оно вам? В любом случае будет не менее громозким, чем if ($i == 5) continue; (ну или равенство/in_array() там и тело цикла), а также более неожиданным.
    Ответ написан
    Комментировать
  • Как вывести текст из массива?

    Я ничего не понял из постановки вопроса. Чтобы вывести One-1, пишите echo $result['One'][0];.
    Ответ написан
    Комментировать
  • Как перенумеровать индексы в массиве?

    sort()
    Ответ написан
    Комментировать
  • При заходе на несуществующею страницу домена, она создается. Как?

    Данных немного не хватает. Pure PHP там или фреймворк/CMS у вас.

    А вообще, можно сделать что-то вроде следующего. Со всех страниц перенаправляете на основной обработчик как-нибудь так:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php

    А обработчик в index.php анализирует адрес, запрашиваемый пользователем и на основе него уже выдает ту или иную информацию. Скажем, если в БД по текущему адресу есть данные, они выводятся. Если нет — предлагается их создать.
    Ответ написан
    3 комментария
  • Как заменить значение в строке?

    Когда вы делаете explode("\n", $str), в каждом элементе массива оказывается одна строка. А explode("=", $str) для каждой из получившихся строк вернет массив из ключа и значения.
    Ответ написан
    Комментировать
  • Цикл в 100.000 итераций vs "умного" цикла?

    Нет информации о том, что за массив, откуда он взялся. Чтобы применять подобный алгоритм, нужно знать о закономерностях расположения информации в массиве. Вы такой информации не предоставили, поэтому сказать, эффективен ли ваш алгоритм, не представляется возможным. Если размещение данных в массиве случайное, то полный перебор решит проблему.

    Как вариант, можно попробовать отсортировать массив по значению, определить положение первого ненулевого элемента и начинать работать с него. Ну или сортировать по убыванию и обходить массив до встречи первого нулевого элемента. Но производительность подобного решения надо предварительно тестировать, раз уж она вас волнует.
    Ответ написан
    Комментировать
  • Как убрать цифру 0 в начале номера?

    ltrim($str, '0')
    Ответ написан
    Комментировать
  • Как лучше писать?

    Да как угодно. Хоть так:
    if ($uTest   === 1 && 
        $uTest_2 === 2 && 
        $uTest_3 === 3)
    Ответ написан
    Комментировать
  • Как разбить строку на массив с повторением?

    Очевидно же, что нужно делать конкатенацию каждого текущего элемента с предыдущим.
    $str = 'test.tests.testst.tesrtcefdg.teestcvxv';
    $arr = explode('.', $str);
    for ($i=1; $i<count($arr); $i++) {
        $arr[$i] = $arr[$i-1].'.'.$arr[$i];
    }


    Можно рекурсивно запилить, если разнообразия в жизни не хватает. Но в PHP это недостаточно компактно выходит:
    $str = 'test.tests.testst.tesrtcefdg.teestcvxv';
    
    function toArray($str, $arr=[]) {
        $pos = strripos($str, '.');
        if ($pos === False) {
            array_unshift($arr, $str);
            return $arr;
        } 
        array_unshift($arr, $str);
        return toArray(substr($str, 0, $pos), $arr);
    }
    
    print_r(toArray($str));
    Ответ написан
    3 комментария
  • Как вывести записи в массив?

    Ошибка в том, что получается массив с одним элементом, содержащим всю строку. Строку надо разбивать по разделителю с помощью split().

    Если элементы в кавычках, то надо потом еще делать trim() для убирания кавычек (передавать ему символы лишние помимо строки).

    Если элементы в кавычках могут содержать запятые, то split() уже не поможет. Нужен более хитрый алгоритм. Можно попробовать поиграть с str_getcsv(), ибо данные как раз похожего на CSV формата.
    Ответ написан
    Комментировать
  • Правильно ли так обращаться к методу класса (PHP)?

    Не надо так делать. Это использование неопределенной константы, результатом чего является преобразование ее в строку. Проблемы две:
    1. Генерирование E_NOTICE.
    2. Если где-то когда-то будет объявлена одноименная константа, вы очень долго будете искать причину внезапно нагрянувших проблем.
    Ответ написан
    Комментировать