Сформулируйте решение по шагам, как бы вы считали стоимость без написания кода, например самостоятельно?
период который ввёл пользователь это некое кол-во дней
проходим в цикле по каждому дню и проверяем в какой диапазон дат он входит
в зависимости от этого узнаем стоимсоть каждого дня и эту стоимость суммируем
на выходе получаем итоговую цену
Время получения 40000+ записей из таблицы offers = 0.2s
Вот такой код отрабатывается за 4s
<?php
$input = range('a', 'z');
$result = my_shuffle($input);
$result2 = my_shuffle($input, true);
var_dump($input);
var_dump($result);
var_dump($result2);
function my_shuffle(array $input, bool $preserve_keys = false): array
{
$result = [];
while (count($input) > 0) {
$rand_key = array_rand($input, 1);
if ($preserve_keys) {
$result[$rand_key] = $input[$rand_key];
} else {
$result[] = $input[$rand_key];
}
unset($input[$rand_key]);
}
return $result;
}
<?php
$one = 3;
$two = 4;
$three = 5;
$four = 6;
$five = 7;
$consolidate = random(compact("one", "two", "three", "four", "five"));
foreach($consolidate as $key => $items) {
echo "$items имеет индекс = $key <br>";
}
function random($mass) {
$rand_key = array_rand($mass, 1);
return [$rand_key => $mass[$rand_key]];
}
<?php
$str = [
["а", "в", "б", "д", "г"],
[2,5,6,3,4],
];
natsort($str[0]);
natsort($str[1]);
echo implode(',', $str[0])."<br>";
echo implode(',', $str[1]);
<?php
$fprint_id = (int)$_GET['fprint_id'];
$device_uid = $_GET ['device_uid'];
$serialnumber = (int)$_GET['serialnumber'];
if($fprint_id < 1 || $fprint_id > 128) {
exit('ID должен быть в диапазоне от 1 до 127');
}
//Проверить введенный f_id в диапазоне от 1 до 127
$stmtfprint = $conn->prepare('SELECT * FROM users WHERE fprint_id = ? LIMIT 1');
$stmtfprint->bind_param('s', $fprint_id);
$stmtfprint->execute();
$resultfprint = $stmtfprint->get_result()->fetch_all();
if($resultfprint) {
exit('Этот ID уже существует!');
}
//существует ли такой же введенный fID, если нет продолжить
$stmtSerial = $conn->prepare('SELECT * FROM users WHERE serialnumber = ? LIMIT 1');
$stmtSerial->bind_param('i', $serialnumber);
$stmtSerial->execute();
$resultSerial = $stmtSerial->get_result()->fetch_all();
if($resultSerial) {
exit('Серийный номер уже занят!');
}
//существует ли такой же SERIALNUMBER, если нет продолжить
$stmtdevice_uid = $conn->prepare('SELECT * FROM users WHERE device_uid = ? LIMIT 1');
$stmtdevice_uid->bind_param('s', $device_uid);
$stmtdevice_uid->execute();
$resultdevice_uid = $stmtdevice_uid->get_result()->fetch_all();
if($resultdevice_uid != true) {
exit('Данный отдел не существует!');
}
//существует ли такой же ОТДЕЛ, если нет продолжить
$stmtadd_fid = $conn->prepare('SELECT * FROM `users` WHERE `add_fid` = 1 LIMIT 1');
$stmtadd_fid->execute();
$resultadd_fid = $stmtadd_fid->get_result()->fetch_all();
if($resultadd_fid) {
exit('Нельзя добавить более одного ID за раз');
//если где-то значение add_fid = 1 - ошибка, иначе продолжить
}
//НАДО ЗАГОТОВИТЬ И ВСТАВИТЬ В ЗАПРОС ДАННЫЕ О НАЗВАНИИ ОТДЕЛА (ОНО СВЯЗАНО С DEV_UID)
$sqlINSERTquery = "INSERT INTO users ( fprint_id, user_date, device_uid, device_dep, del_fid , add_fid)
VALUES ($fid, CURDATE(), $device_uid, $dev_name, 0, 1)";
// $db->query($sqlINSERTquery);
echo('Запись начата');
посмотрел что нужно качать огромные библиотеки
composer require furqansiddiqui/bip39-mnemonic-php
'$pass
в конце пропущена '