2013-04-23 81 views
0

希望你们都有美好的一天充满彩虹和玫瑰!使用PHP的建筑定价逻辑

好吧,好吧。我会得到的一点是:

我有一个接受多个参数,并基于这些参数的产品的价格的功能。这里的一个概念上的例子:

public function getPrice($params) { 
    // black magic goes here 
    return $price; 
} 

的参数包括:

  1. $params[width]取值范围为10一路 - 72英寸
  2. $params[height]取值范围为10 - 44英寸

(实际上有更多的参数,但为了简单起见,我保留了这些参数)。

现在,我在Excel中有一张表格(类似于真值表),其中的行代表width,而列代表height。相应单元格中的值是price

我该如何在PHP中最好地实现这个定价策略?我认为嵌套if陈述会工作,但在第10个if后感到厌倦。帮帮我?

+1

根据Excel中的表看起来像,你可以将它转换成一个PHP数组,遍历该数组,并获取相应的价格 – 2013-04-23 09:27:05

+0

@Pekka웃62列x 34行。这是一个很大的阵列! – FloatingRock 2013-04-23 09:32:36

+0

大?有2108个元素?不是,它不会以记忆方式给你带来任何问题。 – 2013-04-23 09:33:14

回答

3

您可以将Excel中的信息存储在二维数组中。

I.e.

$prices = array( // Columns -- 
        array(1,2,3), // Rows 
        array(4,5,6), // | 
        array(7,8,9) // | 
       ); 

然后你可以看一下基于宽/高的价格做:

return $prices[row][column];

在你的情况下,行会是宽度和列会高度。

由于您的范围从10开始,所以您需要做一些额外的工作,因此您需要从输入的值中减去10。

I.e:

return $prices[width-10][height-10];

+0

所有62列x 34行?这是一个大阵列! – FloatingRock 2013-04-23 09:32:02

+1

@FloatingRock潜在的是,这只是需要最少设置的解决方案。正如另一条评论所说,这通常由数据库来处理。就程序而言,62x34并不算大,但手动输出可能只是一种痛苦(尽管你只需要做一次)。 – MatthewMcGovern 2013-04-23 09:33:32

+1

对此使用数组根本不是问题。如果编辑PHP文件足够方便,并且数据不会经常更改 – 2013-04-23 09:34:41

1

为什么你不把所有的数据放在你的数据库中?对每个参数的所有值都有一个行,并且价格相符?这只是一个查询...