我陷入了两难的境地,非常犹豫该走哪条路,以及是否有更好的方法。
我有一个通配符输入 - 如果你可以这样调用它 - 可能有这些类型的输入
- +0.77
- +0.5%
- -0.51%
平坦值始终为正值,百分比值可以为正值。
存储这些值的最佳实践是什么?作为字符串或作为 2 列,其中一列包含值,另一列为 bool 值类型?
我很困惑,因为如果我选择最简单的路径,在某些情况下我会遇到其他问题,我需要将这些值乘以整数并考虑 trim($value, '%')
然后检查是否有将其添加到结果中
最佳答案
这可能看起来有点矫枉过正,但我肯定会在这里寻找对象。
两个类,一个按绝对值偏移,另一个按百分比值偏移。定义一个工厂方法来解析输入字符串并实例化任一类。
然后,让这两个类扩展一个公共(public)接口(interface),该接口(interface)将包含类似 getAjustedValue(initialValue):ajustedValue
的方法。这将使这些调整值的使用变得更加容易和清晰。
OP评论后更新
对于数据库中的存储,我会将两种类型的调整存储在不同的列中。它使得编写计算调整值的 SELECT 语句变得非常容易,如:SELECT (original_value * ajustement_ratio + ajustement_absolute) as adjustment_value FROM ...
。
显然,我希望 ajustements 和 Original_value 不会来自同一个表,但这可以让您了解全局。
关于php - 存储混合类型数字(百分比和单位值)的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19551153/