需要在此循环中将常量更改为动态

我正在运行制造计划(使用 PHP 代码),但目前它是静态的(意味着我无法添加假期或无法更改制造能力 - 当前制造能力是静态的每天 1700 平方英尺)


请看下面的代码


$max = 1700;

$dailyLeft = $max;

$current = reset($priorityArraySum);

$output = [];

//$day = date('Y-m-d');

$day = date('Y-m-d');

while (true)    {

  // echo $current."/".$dailyLeft."=".$day.PHP_EOL;

  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;

    }

  }

}

echo '<pre/>';

print_r($output);

echo '<pre/>';

exit;

使用上面的代码,我可以安排我的制造计划,见下图

当前日程图像

当前代码的问题是,我们每天有 1700 个静态容量,我们希望有动态容量,例如第一天 1700 个,第二天 1900 个,节假日 0 个。

我们如何更改此代码以使其动态化?

目前我正在尝试下面的代码,但它不起作用


摇曳的蔷薇
浏览 54回答 1
1回答

白猪掌柜的

这是基于您显示的第二个代码。if()一个问题是,您总是将这一天推迟,并且您应该只在当天容量已满的第一部分执行此操作。为了方便起见,我还在循环中预先检索了所有日期和容量,并将它们存储在以日期为键的数组中。$today=date('Y-m-d');$pln_qry=mysql_query("select *&nbsp;&nbsp; &nbsp; from tbl_mfg_schedule&nbsp;&nbsp; &nbsp; where ms_date > '".$today."'&nbsp;&nbsp; &nbsp; order by ms_date") or die(mysql_error());// Load list of days and production$plnList = [];while ( $pln_data=mysql_fetch_array($pln_qry) ) {&nbsp; &nbsp; $plnList [ $pln_data['ms_date'] ] = $pln_data['ms_po_sqft'];}$current = reset($priorityArraySum);$output = [];$day = date('Y-m-d');// Set max from production plan$max = $plnList[ $day ];//$max = 1700;$dailyLeft = $max;while (true)&nbsp; &nbsp; {&nbsp; &nbsp; //echo $dailyLeft."</br>";&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if ( $current >= $dailyLeft )&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; //$day=date('Y-m-d', strtotime($day. ' + 1 days'));&nbsp; &nbsp; &nbsp; &nbsp; $output[] = ["priority" => key($priorityArraySum),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "amount" => $dailyLeft,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "day" => $day&nbsp; &nbsp; &nbsp; &nbsp; ];&nbsp; &nbsp; &nbsp; &nbsp; $day=date('Y-m-d', strtotime($day. ' + 1 days'));&nbsp; &nbsp; &nbsp; &nbsp; $current -= $dailyLeft;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; // Move onto the next days capacity, if no specific value assume&nbsp; &nbsp; &nbsp; &nbsp; // same as last ( ?? $max)&nbsp; &nbsp; &nbsp; &nbsp; $max = $plnList[ $day ] ?? $max;&nbsp; &nbsp; &nbsp; &nbsp; $dailyLeft = $max;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; }&nbsp; &nbsp; else&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; $output[] = ["priority" => key($priorityArraySum),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "amount" => $current,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "day" => $day&nbsp; &nbsp; &nbsp; &nbsp; ];&nbsp; &nbsp; &nbsp; &nbsp; $dailyLeft -= $current;&nbsp; &nbsp; &nbsp; &nbsp; if ( ($current = next($priorityArraySum)) === false )&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;}echo '<pre/>';print_r($output);echo '<pre/>';使用一些虚拟测试数据(请注意,缺少日期,因此假设它将与...2020-08-14相同2020-08-13$priorityArraySum = [2000, 200, 6000, 1200];$plnList = [ '2020-08-10' => 1700,&nbsp; &nbsp; &nbsp; &nbsp; '2020-08-11' => 1700,&nbsp; &nbsp; &nbsp; &nbsp; '2020-08-12' => 0,&nbsp; &nbsp; &nbsp; &nbsp; '2020-08-13' => 500,&nbsp; &nbsp; &nbsp; &nbsp; '2020-08-15' => 1700];它产生...<pre/>Array(&nbsp; &nbsp; [0] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 1700&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-10&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [1] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 300&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-11&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [2] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 200&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-11&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [3] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 1200&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-11&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [4] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-12&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [5] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 500&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-13&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [6] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 500&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-14&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [7] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 1700&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-15&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [8] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 1700&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-16&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [9] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 400&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-17&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [10] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [priority] => 3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 1200&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [day] => 2020-08-17&nbsp; &nbsp; &nbsp; &nbsp; ))
打开App,查看更多内容
随时随地看视频慕课网APP