2009-11-21 32 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
  • 当您调用该函数时,您忽略了传递任何参数。这将导致警告和通知,但会运行。
相关问题