我在一些非常简单的事情上遇到了很大的困难,在试图找到两天的答案之后,我需要一些帮助。
在我的产品数据库中,我正在使用货币。我想将所有产品价格存储在美分中。到目前为止,一切都很好,因为我也在与单位合作。我的产品包括杂货。因此,举例来说,我有以下产品供我选择:
- 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以显示正确的欧元。
所以,很多人在这里理解我的问题,并且任何指示正确的方向以帮助我找到我的答案将不胜感激。
答案 0 :(得分:1)
我不确定我在这里理解你的逻辑,但听起来你可以通过精心设计的面向对象编程(OOP)来解决这个问题。从基础WeightedProduct
开始 - 并使用PackagedProduct
和Product
进行扩展。然后在WeightedProduct
中实现您的通用逻辑,并在每个相应的扩展类(PackagedProduct
和class 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]