Получите разные значения для каждого дня от 35 дней PHP - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь достичь своего рода результата, в котором я могу получить различные значения для «каждого дня» и «общего значения» для «35 дней», а затем я хочу сохранить значение в столбце (ROI ) из таблицы пользователя:

В настоящее время я пытаюсь добиться так:

$total_days = 35;
$total_amount = 200;
$arr = array();

for($i = 0; $i < $total_days; ++$i)
{
    $arr[] = rand(0.0, 1000.0);
}

$actual_sum = array_sum($arr);

for($i = 0; $i < $total_days; ++$i)
{
    $arr[$i] *= $total_amount /$actual_sum;
    //echo $arr[$i]."<BR><BR>";
}

$sum = array_sum($arr);

//echo "Sum = ".$sum;

И результат:

*********************************************

5.2625698324022

4.9162011173184

0.27932960893855

5.9776536312849

9.7430167597765

and so on for the total 35 days

Sum = 200

**********************************************

Это приводит меня значения всех дней Теперь мне нужно получить значение только за один день, а затем я вставлю это значение в таблицу, и этот код будет ежедневно выполнять задание cron в течение 35 дней.

Мой вопрос: как получить только одно значение в переменной, чтобы я мог сохранить его в таблице?

Например:

$value_to_insert = 5.26 (the first generated value for first day of cron job running);

And there will be the same for 2nd day cron job ($value_to_insert should be = 4.91)

Также, если есть хорошая идея, Как мне управлять значениями всех дней, чтобы, если cron будет работать на 35-й день, все вставленные значения должны быть равны в $ total_amount (200)?

Моя структура таблицы:

********************************
UserID (int)
UserName (varchar)
Email (varchar)
Earning (int)
LastROIEarning (int)
Date (timestamp)
********************************

1 Ответ

1 голос
/ 15 апреля 2020

Простой ответ на ваш вопрос: Мой вопрос заключается в том, как получить только одно значение в переменной, чтобы я мог сохранить его в таблице? будет выглядеть так: просто укажите $ arr с помощью ключа, например $arr[0] - это первое значение, $arr[1] - это второе значение и т. Д. c ...

Но я считаю, что это не ваш вопрос. Это больше о том, как добиться этого в сочетании с заданием cron.

Вот решение, которое я придумала:

Это текущий пример вывода из вашего кода:

array (size=35)
  0 => float 4.1004135360242
  1 => float 5.0905702137574
  2 => float 4.1819558506611
  3 => float 1.8754732366474
  4 => float 1.3512726425534
  5 => float 9.7035354417846
  6 => float 3.7509464732949
  7 => float 7.7581687925913
  8 => float 4.6013163259363
  9 => float 2.5394606558332
  10 => float 2.5627584600151
  11 => float 1.6774419011008
  12 => float 10.553905294426
  13 => float 10.938319063428
  14 => float 6.0923757935815
  15 => float 8.0610402469567
  16 => float 10.099598112878
  17 => float 9.7501310501485
  18 => float 2.3064826140136
  19 => float 10.495660783971
  20 => float 11.637253188887
  21 => float 2.9821189352903
  22 => float 8.3406138971402
  23 => float 10.099598112878
  24 => float 6.0457801852175
  25 => float 0.46595608363912
  26 => float 0.51255169200303
  27 => float 2.108451278467
  28 => float 1.7123886073738
  29 => float 6.2205137165822
  30 => float 7.5950841633176
  31 => float 10.949967965519
  32 => float 1.1765391111888
  33 => float 6.7563632127672
  34 => float 5.9059933601258

Я бы сохранил все эти значения в пустой таблице (cronvalues) со структурой, подобной этой:

id   value                used
1    4.1004135360242      0
2    5.0905702137574      0
3    4.1819558506611      0
4    1.8754732366474      0 
etc (up to 35 rows)

Это поколение из данных должен быть ваш текущий файл php и он должен называться generate.php или аналогичным.

Файл, который называется ежедневным, может быть cronday.php:

cronday. php:

  1. ВЫБРАТЬ СЛУЧАЙНЫЙ ИДЕНТИФИКАТОР из таблицы cronvalues ​​

    SQL: SELECT id FROM cronvalues WHERE used = 0 ORDER BY RAND() LIMIT 1

    Сохранить значение в $result_id

  2. ОБНОВЛЕНИЕ ЗНАЧЕНИЯ в базе данных, которая используется сейчас

    SQL: UPDATE cronvalues SET used = 1 WHERE id={$result_id}

В этих шагах вы можете отслеживать текущую сумму, используя SQL:

SELECT SUM() AS currentsum FROM cronvalues WHERE used = 1

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

Я не уверен, что это именно то, что вы имели в виду, но я надеюсь, что это даст некоторые идеи, как Вы можете решить свою проблему.

...