我正在编制产品库存。现在我正在计算或将项目转换为更大的单元。
例如: 产品A:1盒= 12瓶
添加交易时,用户可以输入3盒和13瓶等数据。产品A的新值将为3 boxes and 13 bottles in storage
。数据将保存到数据库tbl_transaction
中。
如何自动转换/转换整个项目,例如4 boxes and 1 bottle in storage
以添加到tbl_storage
?
我尝试过这个公式,但是当瓶子的数量在小数点时,我担心它不准确。
$bottles = 13;
$box = 12;
$remaining_in_bottle = number_format($bottles / $box);// this will only convert the bottle into box (also tried float but not sure what I am doing)
$total_box = 3 + ???;
echo $total_box." boxes and ".$remaining_in_bottle ." bottles in storage
答案 0 :(得分:2)
我假设用户只输入数字作为boxes
和bottles
的值,但如果不是,您只需要在执行以下计算之前从字符串中提取这些值:
代码:(Demo)
$bottles_per_box=12;
$user_input_bottles=13;
$user_input_boxes=3;
if($user_input_bottles>$bottles_per_box){
// add truncated integer to box count. DO NOT USE ROUND(), USE FLOOR()
$user_input_boxes+=floor($user_input_bottles/$bottles_per_box);
// store remainder after division
$user_input_bottles=$user_input_bottles%$bottles_per_box;
// ^-- modulo operator
}
echo "New Bottles Total: $user_input_bottles\n";
echo "New Boxes Total: $user_input_boxes\n";
输出:
New Bottles Total: 1
New Boxes Total: 4
答案 1 :(得分:1)
我假设您要为tbl_transaction
和tbl_storage
输入不同的内容。
<强> CODE 强>
//Max bottle per box
$box_max_bottles = 12;
//User Input
$input_box = 3;
$input_bottle = 13;
//Transaction
$transaction = (($input_box > 1) ? $input_box . ' boxes' : $input_box . ' box')
. ' and ' . (($input_bottle > 1) ? $input_bottle. ' bottles' : $input_bottle. ' bottle'). ' in storage';
//Data will save into database tbl_transaction
echo $transaction;
//Get the remainder which is the remaining bottle
$total_bottle = $input_bottle % 12;
//Get the total boxes and divide the bottle into 12
$total_box = floor($input_box + ($input_bottle / 12));
echo "<br />";
//Storage
$storage = (($total_box > 1) ? $total_box . ' boxes' : $total_box . ' box')
. ' and ' . (($total_bottle > 1) ? $total_bottle . ' bottles' : $total_bottle . ' bottle'). ' in storage';
//Data will save into database tbl_storage
echo $storage;
<强>输出强>
交易
3 boxes and 13 bottles in storage
存储
4 boxes and 1 bottle in storage