簡體   English   中英

從總共 35 天中獲取每天的不同值 PHP

[英]Get different values for each day from total of 35 days PHP

我正在嘗試實現一種結果,在該結果中,我可以獲得“每天”的不同值與“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)
********************************

您的問題的簡單答案:我的問題是如何在變量中只獲取一個值,以便我可以將其保存在表中? 將是:只需使用鍵引用 $arr,例如$arr[0]是第一個值, $arr[1]是第二個值等等......

但我相信這不是你的實際問題。 它更多地是關於如何結合 cron-job 來實現這一點。

這是我想出的解決方案:

這是來自您的代碼的當前示例 output:

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. SELECT 來自表 cronvalues 的隨機 ID

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

    $result_id中存儲值

  2. 更新現在使用的數據庫中的值

    SQLUPDATE cronvalues SET used = 1 WHERE id={$result_id}

在上述這些步驟中,您可以使用 SQL 跟蹤當前總和:

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

以上是基於 cronjob 每天只執行一次的事實。 如果你想做一個額外的控制,你可以在表中添加一個額外的列來驗證當前日期。

我不確定這是否正是您的意思,但我希望它能給您一些解決問題的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM