我有一些產品線具有各種功能。我有一份爲每件產品製作的圖紙清單,下面是產品線,產品和功能在圖紙中所代表的示例。如何最好地從查找表中獲取數據
我想弄清楚,當給定一個具體的產品,其所有功能(即從表中的一行),什麼是最有效的最簡潔的方式來構建圍繞我的代碼功能,選擇正確的圖紙?
我總是可以這樣做
if ($product == "A"
&& $motor == true
&& $feet == 3
&& $outlet == true
&& $manual == false)
getDrawing("A_motor_3_outlet_no_manual.jpg");
和if語句結束與儘可能多的平板,因爲有表中的行。但是一定有更好的辦法。我認爲這可能與基數有關,或者可能與產品每個屬性的選項的可變性有關。確切的概念由於某種原因而逃脫了我。
我有一種感覺,例如,最好先檢查產品是否有電動機,只是因爲一旦知道它將消除所有選項的一半並將其縮小得更快。即在主外,如果塊做這樣的事情:
if ($motor == true)
{
//7 drawings left to check
}
else
{
//6 drawings left to consider
}
,而不是像這樣:
if ($feet == 1)
{
//still 10 rows left to consider
}
else if ($feet == 2)
{
//just 2 options left to check
}
else if ($feet == 3)
{
//one option only left:
getDrawing("B_motor_3_no_outlet_manual.jpg");
}
但是,也許我只是得太多這一點,只需要一個查找表以某種方式與所有的屬性,可能就像
getDrawing($lookup[$product][$motor][$feet][$outlet][$manual]);
問題仍然存在於哪些順序的屬性最好用於查找表,如果它很重要。
問:
是否有一個「最佳」的if-then-else塊嵌套爲了決定產品性能,以減少決策的總數的代碼必須全面做,或者我需要放棄這種思路,只用查找表?爲什麼或者爲什麼不?
編輯:順便說一下..這看起來像一個很好的候選人使用數據庫..但我只有48行總數,並可以將它們直接編碼到代碼中。這將是隻讀的,不會經常更新,所以我正在考慮使用多維數組來編碼這些數據。
哦,很酷,我喜歡哈希的想法,比我所知道的更加簡潔,我不知道是否應該使用表格,這使得我的選擇成爲了我的想法。 – Dennis 2014-10-02 21:27:42
我結束了使用數據庫 – Dennis 2014-10-10 18:22:28