[英]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:
SELECT 來自表 cronvalues 的隨機 ID
SQL: SELECT id FROM cronvalues WHERE used = 0 ORDER BY RAND() LIMIT 1
在$result_id
中存儲值
更新現在使用的數據庫中的值
SQL : UPDATE 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.