php - 根据总数确定案例数 (4,6,12)

标签 php function math

我有一个购物车,里面装着元素,如果我能将元素均匀地放入 4,6 或 12 箱且没有剩余的情况下,我就可以运送元素。我以为我已经弄清楚了,但是如果我的购物车有 8 件商品,我的代码就会失败,因为它会计算出 1 6 件,剩下 2 件,而不是计算出它可以装在 2 4 包中。 8 当然不是唯一可能导致我失败的数字,但它是一个例子。我怎样才能让我的代码正确地解决这个问题?下面是我现在所拥有的,我仍然以 $qTY var 中的金额和金额结束,其中 8 作为失败的例子。

$num12s = $tQTY / 12;

$num12s = explode(".", $num12s);
$numCases = $num12s[0];

if($num12s[0] >= 1){

$doSub = $num12s[0] * 12;
$tQTY = $tQTY - $doSub;

}

$num6s = $tQTY / 6;
$num6s = explode(".", $num6s);
$numCases = $numCases + $num6s[0];

if($num6s[0] >= 1){

$doSub = $num6s[0] * 6;
$tQTY = $tQTY - $doSub;

}


$num4s = $tQTY / 4;
$num4s = explode(".", $num4s);
$numCases = $numCases + $num4s[0];

if($num4s[0] >= 1){

$doSub = $num4s[0] * 4;
$tQTY = $tQTY - $doSub;

}

我需要先填充一箱 12 个,如果我不能这样做,我需要接下来填充一箱 6 个,如果我不能这样做,我需要填充一箱 4 但如果我不能按这个顺序这样做超过 2 箱 4 件(对于装有 8 件的推车)即可,或者一箱 12 件、一箱 6 件和一箱 4 件(对于装有 22 件的推车)等。

最佳答案

假设您只想知道是否可以交付元素(没有有关如何分区包裹的信息),这不是完全没有必要吗?在这种情况下,这非常简单:每个偶数 >=4 都可以,所以它只是:

$possible = ($number>=4 && $number%2==0);

编辑:
如果您还需要有关包装的更多详细信息,我会创建一些类似这样的函数( see it working on codepad ):

/*
 *  determines if the given number of items is deliverable or not.
 */
function delivery_possible($number_of_items){
  return ($number_of_items>=4 && $number_of_items%2==0);
}

/*
 *  returns an array containing a counter for each package-size given
 *  the number of items. returns false if it can't be solved without
 *  leaving a rest.
 */
function delivery_packages($number_of_items){
  if(!delivery_possible($number_of_items)){
    return false; //impossibru!!!
  }
  $r = array('size4'=>0, 'size6'=>0, 'size12'=>0);

  $r['size12'] = $number_of_items%12==0?(int)($number_of_items/12):(int)(($number_of_items-4)/12);
  $number_of_items -= $r['size12']*12;

  $r['size6'] = $number_of_items%6==0?(int)($number_of_items/6):(int)(($number_of_items-4)/6);
  $number_of_items -= $r['size6']*6;

  $r['size4'] = (int)($number_of_items/4);

  return $r;
}

关于php - 根据总数确定案例数 (4,6,12),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372634/

相关文章:

尝试从 iOS 应用程序访问 PHP 脚本时,它崩溃了

c - "..."在 C 函数声明中意味着什么?

php - 使用 vprintf 的廉价 php 模板?

javascript - jQuery 监听器点击不起作用

c++ - c++中倒数计算的性能

php - mySQL 查询不存在

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - Sphinx 搜索 Api SPH_MATCH_EXTENDED 不起作用

求一个数的对数的算法

algorithm - 堆叠矩形以占用尽可能少的空间