【发布时间】:2020-08-07 06:19:38
【问题描述】:
我有如下表
所以有优先级和平方英尺,我想开始制造计划(从当前日期开始),每天将处理 1700 平方英尺,如下图所示
但是你可以看到它不工作
我试过下面的代码
foreach($priorityArraySum as $key=>$val)
{
$totalDays=ceil($val/1700);
$cutSQFT=$val;
for($j=1;$j<=$totalDays;$j++)
{
if($cutSQFT>1700)
{
echo '1700';
$cutDate=date('Y-m-d', strtotime($cutDate. ' + 1 days'));
$cutSQFT=$cutSQFT-1700;
}
else
{
echo $cutSQFT;
$cutSQFT=$cutSQFT-$cutSQFT;
}
}
}
@Nigel,为了使这个动态化,我已将代码更改为下面,但它不起作用。
$pln_qry=mysql_query("select * from tbl_mfg_schedule where ms_date='".$today."'") or die(mysql_error());
$pln_data=mysql_fetch_array($pln_qry);
$max = $pln_data['ms_po_sqft'];
$dailyLeft = $max;
$current = reset($priorityArraySum);
$output = [];
//$day = date('Y-m-d');
$day = date('Y-m-d');
while (true) {
$pln_qry=mysql_query("select * from tbl_mfg_schedule where ms_date='".$today."'") or die(mysql_error());
$pln_data=mysql_fetch_array($pln_qry);
$max = $pln_data['ms_po_sqft'];
if ( $current >= $dailyLeft ) {
//$day=date('Y-m-d', strtotime($day. ' + 1 days'));
$output[] = ["priority" => key($priorityArraySum),
"amount" => $dailyLeft,
"day" => $day
];
$day=date('Y-m-d', strtotime($day. ' + 1 days'));
$current -= $dailyLeft;
$dailyLeft = $max;
}
else {
$output[] = ["priority" => key($priorityArraySum),
"amount" => $current,
"day" => $day
];
$dailyLeft -= $current;
if ( ($current = next($priorityArraySum)) === false ) {
break;
}
}
}
【问题讨论】:
-
请将数据粘贴为数组值,而不是图片。
-
什么不起作用?
-
@Epodax for 循环的逻辑不起作用,您可以看到它在优先级 2 之前运行良好,对于优先级 3,它只需要 282.59 平方英尺
-
您的代码不会使用给定的输入数据产生您所说的结果。给我们一个合适的minimal reproducible example,包括代码形式的实际数据。