2009-11-21 58 views
0

我不太清楚在php中聲明函數,所以我會試試這個。在PHP中聲明函數的正確方法?

getselection(); 

function getselection($selection,$price) 
{ 
global $getprice; 
switch($selection) 
{ 
    case1: case 1: 
     echo "You chose lemondew <br />"; 
     $price=$getprice['lemondew'].'<br>'; 
     echo "The price:".$price; 
    break; 

請讓我知道如果我這樣做不對,我想這樣做的正確方法;另外,php.net有例子,但是對於newb來說它們有點複雜,我想當我變得精通時,我會開始使用他們的文檔,謝謝你不要燃燒。

請提供可能幫助我解決這個問題的鏈接?

+0

爲什麼'$ selection'包含一個數字而不是一個字符串(例如「lemondew」)? – outis 2009-11-23 20:07:40

回答

0

你起步合理。現在您只需要移除多餘的case 1:,然後用}關閉switch聲明,然後用另一個}關閉function。我假設全球陣列$getprice是在您的代碼中定義的,但未在問題中顯示。

0

在調用函數之前聲明函數是一種很好的做法。它會防止你的代碼不經常出現不正常行爲。

0

該示例基本上是一個有效的函數定義(意味着它運行,除了Asaph提到的關於大括號的括號),但不遵循best practices

  • 命名約定:當名稱由兩個或更多單詞組成時,請使用camelCase或underscores_to_delineate_words。只要你一致,你使用哪一個並不重要。另請參閱亞歷克斯關於PHP naming conventions的問題。
  • 選擇一個好名字:「get」前綴表示「getter」或「accessor」;任何形式爲「getThing」的方法或函數都應該返回一個事物,並且在函數或對象外面沒有可見的影響。示例函數可能更好地稱爲「printSelection」或「printItem」,因爲它會輸出所選項目的名稱和價格。
  • 全局:一般來說,globals cause problems。一種替代方法是使用類或對象:將變量設置爲類的靜態成員或對象的實例成員。另一種方法是將數據作爲附加參數傳遞給函數,但參數太多的函數不易讀。
  • 交換機是非常有用的,但並不總是最好的選擇。在示例中,$selection可以很容易地保存項目的名稱而不是數字。這指出了使用開關的一種替代方法:在數組中使用索引(順便說一句,它是如何在Python中完成的)。如果這些案例具有相同的代碼,但使用的值有所不同,則陣列是可行的。如果你使用的是對象,那麼polymorphism就是要走的路 - 但這本身就是一個話題。
  • $price參數似乎沒有用處。如果您希望函數返回價格,請使用return statement
  • 當您調用該函數時,您忽略了傳遞任何參數。這將導致警告和通知,但會運行。
相關問題