• Чтобы проверить, что переменная является числом PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перед тем как учить РНР, тебе нужно обязательно научиться пользоваться интернетом.
    Во времена твоих бабушки и дедушки интернета не было. И тогда да - единственным способом что-то узнать было только спросить у кого-нибудь.
    Но сейчас это уже не так.
    Есть интернет. И твой вопрос обязательно уже задавал кто-нибудь. Поэтому надо просто поискать.
    Пишешь в адресной строке своего браузера, проверить, что переменная является числом PHP
    и видишь примерно миллион ответов на свой вопрос
    Круто, правда?
    Ответ написан
    2 комментария
  • Как заменить значения в файле?

    @d-sem
    $str = '<offer id="10609" available="true">
            <price>847</price>
            <currencyId>RUB</currencyId>
            <categoryId>787</categoryId>
        </offer>
        <offer id="10617" available="true">
            <price>404</price>
            <currencyId>RUB</currencyId>
            <categoryId>787</categoryId>
        </offer>';
    
    $result = preg_replace_callback(
        '/<price>(.*?)<\/price>/m',
        function ($matches) {
            return $matches[1] * 0.8;
        },
        $str
    );
    
    
    echo "The result of the substitution is " . $result;


    Вместо строки - получать содержимое файла.
    Ответ написан
    3 комментария
  • Возможно ли такая функция?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Сначала нужно учить объекты в PHP и что-то написать своё с использованием этих объектов.
    2. Научиться читать и понимать код.
    3. Ознакомиться с принципами создания (проектирования) архитектуры: паттерны проектирования.
    4. Посмотреть: как сделано в популярных фреймворках и сравнить.
    5. Поставить себе цель что-то сделать самостоятельно и начать с проектирования архитектуры.

    Про функцию: да, возможно. Даже более того, таким же точно образом можно создавать формы и их обработчики в полностью автоматическом режиме (автогенерация всех переменных и тегов).
    Ответ написан
    1 комментарий
  • Возможно ли такая функция?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Всё надо учить. И ООП, и MVC, и фреймворки.
    А перед этим надо освоить чистый РНР. Плюс SQL, базы данных, программирование, протоколы, безопасность, устройство серверов
    От курсов толку не будет, надо купить нормальную книжку. И не одну.
    Ну и запастись терпением.
    Годика через два-три сможешь создать нормальный веб-сайт.

    функцию создать можно.
    Ответ написан
    1 комментарий
  • Как отсортировать многомерный массив PHP со сложными условиями?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    array_multisort(
        array_column($array, 'unread_pm'), SORT_DESC, 
        array_column($array, 'last_date'), SORT_DESC, 
        $array
    );


    Если вы делаете выборку из БД то сортировку можно сделать в SQL-запросе
    SELECT ... ORDER BY unread_pm DESC, last_date DESC
    Ответ написан
    4 комментария
  • Как из массива объектов удалить дублирующиеся объекты?

    @alexalexes
    Можно удалить id из элемента массива (точнее из копии элемента), оставшиеся свойства засериализовать, от сериализации найти md5 хэш - это и будет ориентир для уникальности элемента.
    $out_array = [];
    foreach($donates as $donate)
    {
       $donate_copy =  $donate; // копируем элемент массива
       unset( $donate_copy->id); // удаляем уникальное свойство из элемента
       $key = md5(serialize($donate_copy)); // получаем уникальный ключ по содержанию остальных свойств
       $out_array[$key] =  $donate; // добавляем исходный элемент в новый массив по уникальному ключу
    }
    Ответ написан
    2 комментария
  • Как из массива объектов удалить дублирующиеся объекты?

    @Stalinko
    PHP'шник и фрилансер до мозга костей
    Обновлённый ответ.

    1. Можешь все объекты преобразовать в массивы без поля ID. Далее просто использовать array_unique($collection, SORT_REGULAR);

    2. Можешь определить метод __toString() у класса DonateOperation. Как-нибудь так:

    public function __toString(): string
    {
        $attrs = (array)$this;
        unset($attrs['id']);
        return json_encode($attrs);
    }


    Тогда array_unique будет работать применительно к исходной коллекции объектов.

    3. Брут-форс в лоб. Самый долгий способ. С небольшой оптимизацией:

    $collection = [...]; //исходная коллекция объектов
    $found = []; //коллекция найденных массивов для быстрой проверки
    $unique = []; //результирующая коллекция
    
    foreach ($collection as $item) {
        //преобразуем объект в массив без поля "id"
        $array = (array)$item;
        unset($array['id']);
        
        //ищем полученный массив в массиве $found
        if (!in_array($array, $found)) {
            $found[] = $array;
            $unique[] = $item;
        }
    }
    Ответ написан
    2 комментария
  • Будет ли дублироваться контент SEO у блога?

    megakor
    @megakor
    Go/PHP developer | Вконтакте
    Мало того, что возможно будут проблемы с SEO, так это и просто некрасиво.
    Выводите всегда короткое описание либо же просто название статьи с ссылкой.
    Ответ написан
    Комментировать
  • Как показать код в определенное время года?

    @FasterTans
    <?php
       
    $currentDate = date('Y-m-d');
    $currentDate = date('Y-m-d', strtotime($currentDate));
       
    $startDate = date('Y-m-d', strtotime("01/09/2019"));
    $endDate = date('Y-m-d', strtotime("01/10/2019"));
       
    if (($currentDate >= $startDate) && ($currentDate <= $endDate)){
        echo "Current date is between two dates";
    }else{
        echo "Current date is not between two dates";  
    }

    Динамически подставляйте текущий год
    Ответ написан
    Комментировать
  • Как показать код в определенное время года?

    mahmudchon
    @mahmudchon
    <?php
    $time_now = time(); // время сейчас в секундах
    
    $date_start = date( '15.12.Y' ); // 15.01.2020
    $date_end  = date( '15.01.' ) . ( (int)date('Y') + 1 ); // 15.01.2021
    
    $time_start = strtotime($date_start); // переводим в секунды
    $time_end  = strtotime($date_end ); // переводим в секунды
    
    if( $time_now >= $time_start && $time_now <= $time_end  ) { // сравниваем в секундах
        echo 'something'; // выводим что-то
    }
    
    echo date( 'd.m.Y H:i:s', $time_now );  // дата сейчас
    Ответ написан
    2 комментария
  • Как вывести с помощью цикла фото и видео с библиотеки Wordpress?

    vladchv
    @vladchv
    WordPress Developer
    <?php
    $args = array(
    	'post_type'  => 'attachment',
    	'numberposts' => null,
    	'post_status' => null
    );
    
    $attachments = get_posts($args);
    if($attachments){
    	foreach($attachments as $attachment){ ?>
    		<a href="<?php the_permalink($attachment); ?>"><?php echo apply_filters( 'the_title', $attachment->post_title ); ?></a>
    <?php }
    } ?>


    Если нужна ссылка на сам файл, то:
    <a href="<?php echo wp_get_attachment_url($attachment->ID); ?>"><?php echo apply_filters( 'the_title', $attachment->post_title ); ?></a>
    Ответ написан
    8 комментариев
  • На каком языке CMS сайта будет работать быстрее?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    При такой постановке вопроса на любом языке у вас CMS медленно будет работать ввиду недостатка опыта правильной разработки.
    Язык программирования нужен не для скорости, а для понятности людям. Скорость выполнения кода не так критична в вебе, как правильная архитектура. Иначе всё бы писали на ассемблере, но где вы видели сайты на ассемблере? Нет, наверняка такие есть и вполне можно сделать какой-нибудь фреймворк с CMS хоть на ассемблере, хоть на брейнфаке, но это глупо.
    Обычно язык программирования не является бутылочным горлышком для скорости CMS.
    Ошибки в архитектуре, непродуманная масштабируемость, отсутствие кэширования, излишняя связность, избыточность внешних зависимостей, пренебрежение CDN -- всё это гораздо сильнее влияет на тормоза и все эти проблемы можно реализовать на любом языке.
    Язык нужно выбирать так, чтобы он давал возможность делать код более простым, читабельным и понятным не смотря на его количество. У языка должно быть большой комьюнити, чтобы можно было легко находить недорогих и эффективных специалистов для поддержки проекта.
    Ответ написан
    Комментировать
  • На каком языке CMS сайта будет работать быстрее?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Прежде всего стоит различать такие термины, как CMS, CMF и фреймворки.
    Раз к вашему вопросу добавлен тег Java, то скажу следующее - как правило, на Java CMS не пишут. Можно конечно же написать, но так как такие языки, как Java и C# ориентированы на Enterprise, то обычно на них пишут веб-приложения с использованием различных фреймворков под конкретную задачу. К тому же, если сравнить готовые CMS написанные на Java (например, HippoCMS) и на РНР (например, WordPress), то вы заметите, что деплоить приложения написанные на Java сложнее, чем на РНР. Опять же знаменитая 5-ти минутная установка WP на сервер намного легче. + важный момент заключается в том, что CMS системы написанные на РНР можно развернуть на любых shared хостингам, в то время, как для Java развертывания приложений вам нужно подготовить сервер (VPS или VDS), установить Tomcat или любой другой сервлет-контейнер. Или же деплоить приложение в облако - AWS, Heroku и др. Как минимум, это требует доп. знаний и опыта или же привлечения доп. специалиста - DevOPS.
    Соответственно, не лучшая идея писать CMS на компилируемых языках. Java, C#, Kotlin, Scala и т.д.
    Также многое зависит непосредственно от разработчика. Если вы лучше владеете ЯП - python, то конечно же вам будет легче и лучше писать на нем, нежели на Java.
    Также стоит учесть, что CMS подразумевает некую универсальность применения и соответственно, на CMS может быть много лишнего кода (функционала), который вам и не нужен, но при этом потребляет ресурсы сервера. Или например, CMS может быть подточен на реализацию определенной цели. Например, на блог (как в случае с ВП), но при этом владельцу сайта может понадобится и интернет-магазин или еще что-нибудь. Довольно часто, из-за подобной универсальности приходится жертвовать архитектурой приложения, что непосредственно сказывается на быстродействии. Для наглядности - WP. Там в одной таблице wp_posts могут храниться различные данные (от записей и страниц, вплоть до товаров и объявлений и сообщений форума), хотя по факту каждый из них является отдельной сущностью.
    Также при разработке CMS систем предпочтение я бы отдавал интерпретируемым языкам и также учел бы их распространенность на хостингах. Тут опять-таки преимущество имеет РНР.
    Ответ написан
    Комментировать
  • Как правильно добавить элементы в уже существующий массив?

    @Stalinko
    PHP'шник и фрилансер до мозга костей
    $data['fields'] += ['ADIPISCING' => 'ELIT'];

    Отсутствующие поля добавит. Уже имеющиеся оставит нетронутыми.
    Ответ написан
    Комментировать
  • На .php не работают tab?

    @vardoLP
    Ват ю сэй эбаут май мама?!
    мож они виноваты? ))

    5fbcde3f7808c803359354.jpeg
    Ответ написан
    4 комментария
  • Как настроить редактор для постов в wordpress?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Добавьте параметр
    show_in_rest => true, только с кавычками как положено и куда положено
    Ответ написан
    Комментировать
  • Как сделать числа уникальными?

    @Stalinko
    PHP'шник и фрилансер до мозга костей
    $array = [];
    for ($i = 0; $i < 5; ++$i) {
        do {
            $new_value = random_int(0, 100);
        } while (in_array($new_value, $array));
        $array[] = $new_value;
    }
    
    print_r($array);
    Ответ написан
    9 комментариев
  • Как сделать числа уникальными?

    dyuriev
    @dyuriev
    A posteriori
    Генерирует 3 строки 5 чисел длиной
    Все числа в получившихся строках будут уникальны (одно и тоже число не встретится как и в одной строке, так и в двух разных строках)

    $length = 5; //количество чисел в генерируемой строке
    $count = 3;  //количество генерируемых строк
    
    //создаем массив из чисел по порядку от 0 до 100
    $r = range(0, 100);
    
    //перемешиваем его
    shuffle($r);
    
    for ($i = 0; $i <= $count-1; $i++) {
    	// берем кусок массива $r длиной $length и сдвигая первый элемент для каждой строки на $i * $length
    	$arr = array_slice($r, $i * $length, $length);
    	// преобраузем получившийся массив в строку с разделителем ", "
    	$array[] = implode(', ',$arr);
    }
    
    print_r($array);


    Результат:

    Array
    (
        [0] => 80, 94, 91, 72, 63
        [1] => 33, 100, 12, 75, 18
        [2] => 69, 0, 43, 76, 61
    )
    Ответ написан
    Комментировать
  • Как по числу недели в году получить начальную дату недели и конечную?

    Tomio
    @Tomio
    backend developer (python, php)
    Вам нужно лишь распарсить "2020-01" и вытащить год и номер недели, которые нужно будет подставить в эту функцию:
    function getStartAndEndDate($week, $year) {
      $dto = new DateTime();
      $dto->setISODate($year, $week);
      $ret['week_start'] = $dto->format('Y-m-d');
      $dto->modify('+6 days');
      $ret['week_end'] = $dto->format('Y-m-d');
      return $ret;
    }
    
    $week_array = getStartAndEndDate(1,2020);
    print_r($week_array);
    Ответ написан
    Комментировать