php - 从总共 35 天 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 来实现这一点。
这是我想出的解决方案:
这是您的代码的当前示例输出:
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:
从表 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 每天只执行一次的事实。如果你想做一个额外的控制,你可以在表中添加一个额外的列来验证当前日期。
我不确定这是否正是您的意思,但我希望它能给您一些解决问题的想法。
推荐阅读
- azure - Azure Application Insights CLI 事件类型
- java - Java中ArrayList的逻辑(连接三个类)
- javascript - chrome.webRequest.onHeadersReceived 使用不存在的 tabId
- spring-boot - nebula.release 找不到任务“release”
- chart.js - angularJs 中的图表选项(NodeRed 图表)
- python-3.x - 如何在终端 mac 中修复“由于 OSError:[Errno 13] 而无法安装软件包”
- javascript - 所以我想从我的代码中提取这些按钮的值我应该怎么做
- javascript - 为什么 browser.saveScreen() 函数在 WebdriverIO 的图像比较服务中不起作用?
- python - 将 pandas read_excel 生成的 dict 保存到多页 excel 文件中
- javascript - 如何在播放 viemo autolay 视频时暂停光滑的滑块