Выбрать четыре дня текущей недели, включая сегодняшний и три случайных

92
27 мая 2021, 09:20

Нужно выбрать 4 дня недели, включая сегодняшний. Желательно использовать инструменты, входящие в Laravel, так как проект создан с помощью этого PHP фреймворка.

Я сделал по такой схеме:

// Сегодняшний день + еще `n` дней
Carbon::now()->addDay(n)->isoFormat('dddd');
// где n = Arr::random(1,6);

Возможно есть другие решения. Подскажите варианты реализации задуманного.

Answer 1
<?php
use Carbon\Carbon;
use Carbon\CarbonPeriod;
$days = [];
$now = Carbon::now();
// Формируем массив ключей для семи дней недели.
$keys = range(0, 6);
// Удаляем текущий день.
// dayOfWeekIso - возвращает число текущего дня недели
// между 1 (понедельник) и 7 (воскресенье).
unset($keys[$now->dayOfWeekIso - 1]);
// Выбираем случайные три дня.
$rand_keys = array_rand($keys, 3);
// Создаем массив из дат в периоде
// для начала и конца текущей недели.
$period = CarbonPeriod::between(
  $now->copy()->startOfWeek(),
  $now->copy()->endOfWeek()
);
// Перебираем массив дат, оставляя необходимые.
// `isSameDay` - тот же день того же месяца того же года.
foreach ($period as $key => $date) {
  if (in_array($key, $rand_keys) or $date->isSameDay($now))
    $days[] = $date->locale('ru')->isoFormat('dddd');
}
dd($days);

На выходе получаем: сегодня вторник + еще 3 случайных:

array:4 [▼
  0 => "понедельник"
  1 => "вторник"
  2 => "четверг"
  3 => "суббота"
]
READ ALSO
пространства имен php 7.3

пространства имен php 7.3

У меня в пространстве имен Test, есть класс A

111
Java, запись в файл со смещением

Java, запись в файл со смещением

Вопрос, как в Java(каким классом?) можно производить запись в середину файла(перезаписать блок по смещению)

127