PHP使用货币和单位

时间:2016-02-03 21:32:17

标签: php numbers currency

我在一些非常简单的事情上遇到了很大的困难,在试图找到两天的答案之后,我需要一些帮助。

在我的产品数据库中,我正在使用货币。我想将所有产品价格存储在美分中。到目前为止,一切都很好,因为我也在与单位合作。我的产品包括杂货。因此,举例来说,我有以下产品供我选择:

- Bottle of Coca Cola
- Can of Beer
- Pack of Milk
.. and so on

上述产品的单位通常是数字,你可以得到1瓶可乐,或者两瓶,依此类推。

接下来,我有鸡肉或牛排等产品。它们以盎司,磅,石头等为单位。我想为每种产品存储1克的价格。

现在,我可以在我的数据库中添加一个名为units的字段,并且只需为每个产品添加一个单元。就像,对于可口可乐瓶,我可以添加一个名为bottle的单位或仅piece。对于鸡肉,牛排,我可以说gram。或者我可以使用数值,对于瓶子,我只需使用1和克,对于一公斤可能是1000,或者对于磅来说可能是500。

然后,为了执行一些计算,我可以在显示数据时为每个产品执行此操作:

$total_price = $product->price * product->unit * product->amount / 100

金额代表输入的金额,例如,我想要两瓶可乐,我输入2金额。或者,我想要700克鸡肉,我简单地进入700。我猜它确实有效。但它对我来说感觉不对,感觉应该有更好的方法来做到这一点。

另一个问题是,在显示每种产品的所有价格时。我当然不希望以美分显示它们,而是以欧元显示,所以我只需将price per piece除以100,然后显示该价格。因此,例如,一瓶可乐花费2欧元,然后在我的数据库中,一瓶可乐的price字段为200 (cents),当检索价格并显示它时,我将其除以100显示适当的2欧元。

但对于鸡肉,牛排等,我不能这样做。例如,我首先需要将价格从1克计算回1000克,然后再将该价格除以100以显示正确的欧元。

所以,很多人在这里理解我的问题,并且任何指示正确的方向以帮助我找到我的答案将不胜感激。

1 个答案:

答案 0 :(得分:1)

我不确定我在这里理解你的逻辑,但听起来你可以通过精心设计的面向对象编程(OOP)来解决这个问题。从基础WeightedProduct开始 - 并使用PackagedProductProduct进行扩展。然后在WeightedProduct中实现您的通用逻辑,并在每个相应的扩展类(PackagedProductclass Product { public function __construct () {} } class WeightedProduct extends Product { $unit = 'piece'; public function __construct () { parent::__construct(); } protected function getTotal () { // return the total based on WeightedProducts } } class PackagedProduct extends Product { $unit = 'gram'; public function __construct () { parent::__construct(); } protected function getTotal () { // return the total based on PackagedProducts } } )中实现您的特定逻辑。

def build_simulation(type='running'):
  var1 = {'running': 1,       'starting': 2,       'stopping': 3}
  var2 = {'running': math.pi, 'starting': 7/9,     'stopping': 1e-6}
  varN = {'running': 'this',  'starting': 'is an', 'stopping': 'example'}

  return other_function(var1[type])+var2[type], text+varN[type]