2013-04-23 73 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

爲什麼你不把所有的數據放在你的數據庫中?對每個參數的所有值都有一個行,並且價格相符?這只是一個查詢...