2011-07-08 44 views
2

我明白我可以这样定义一个函数:PHP的用户自定义函数,(IM新需要帮助)

<?php 
    function say_hello() { 
     echo "hello world!"; 
    } 

    say_hello(); 
?> 

......然后,我需要通过只是调用其他地方重用这个功能很多次按名称功能。

我不明白的是“将数据传递给参数内的函数”。我很困惑的含义是什么。

从我一直在学习的一个教训,我有这样的功能:

<?php 
    function say_helloTWO($word) { 
     echo " {$word} hello world a second time "; 
    } 

    say_helloTWO("my name is mike"); 
?> 

屏幕上的这版画

我的名字叫迈克的Hello World第二次

当我用参数"my name is mike"测试函数,它打印到屏幕上,但我不明白如何这个工作。变量$word没有宣布任何地方,所以,如果我从回声取出"$word",那么只有"hello world a second time“显示无my name is mike

这使我相信冥冥中的代码块中,$word定义,是这样吗?

回答

2

在你的第二个功能$word函数定义function say_helloTWO($word)被宣布。

所以函数需要1个参数,它将被分配给变量$word以供使用之内的那个函数。

因此,当您拨打say_helloTWO("my name is mike");时,您将1个参数(“我的名字是麦克”)传递给函数say_helloTWO。该1参数被分配给函数定义中的第一个变量,因此在函数中可用为$word

有意义吗?

1

在这种情况下,函数的定义是说要带一个参数。

function say_helloTWO($word) // $word is the name of this argument 

当你调用你的代码的功能,您在括号内传递的第一件事将作为传递第一个论点在你的例子中,字符串"my name is mike"被传入函数并赋值给变量$ word。

如果我们扩大这一点,并有一个函数有两个参数是这样

function say_helloTHREE($word, $secondArg) 

那么这个功能现在将有两个参数传递到它。第一个参数将被分配给$ word,第二个参数将被分配给$ secondArg。

1

这算作一个有效的声明。它在函数被调用时作为参数提供时被定义。

<?php 
    function my_name_is ($name) { 
     echo "Hello, my name is " . $name; 
    } 
    my_name_is('mike'); 
    // returns 'Hello, my name is mike' 
?> 

因为在调用函数时,它们提供'mike'作为参数,$ name变成'mike'。这就是函数的工作原理。编号:

这是一个特殊的规则。 $ name不需要声明,因为它将在函数被调用时定义。 PHP理解这一点。如果你不提供参数,它仍然是定义的,它只是空的......我相信。

0

它作为参数传递。所以它八九不离十已经括号

0

内声明如果你做的事:

function say_helloTWO($word1, $word2, $word3)

,并呼吁:

say_helloTWO("a", "b", "c");

这将要求say_helloTWO并设置变量$word1"a"$word2"b"$word3"c"

这三个变量在say_helloTWO中定义,该函数正在运行。

举一个实际的例子,说你必须解决二次方程的功能,它看起来像

function quadratic($a, $b, $c) { 
    $x = ($b + sqrt((b*b - 4*a*c)))/ 2*a; 
    return $x; 
} 

然后,而不是重写代码的二次,每次去解决,你可以把它像这个:

$y = quadratic (1, 2, 3); 

这将设置$ a为1,$ b为2和$ c为3,并将结果存储在$ y中。

您可以认为二次函数是一种“小程序”,独立于程序的其余部分,$ a,$ b和$ c仅适用于quadratic函数。

0

这让我相信在这个代码块的某个地方,$ word被定义了,是吗?

不,$ word没有在功能块中定义,当你打电话时它被赋予“我的名字是mike”的值。

换句话说,当你调用函数$字定义:

/* here you are defining word to "my name is mike" */ 
say_helloTWO("my name is mike"); 

/* here you are defining word to "my name is jack"*/ 
say_helloTWO("my name is jack"); 

如果以上仍然没有多大意义,你那么我认为你可能需要回到基本和研究编程世界中的一个功能。

1
<?php 
    function say_helloTWO($word) { 
     echo " {$word} hello world a second time "; 
    } 

    say_helloTWO("my name is mike"); 
?> 

在此代码中,变量$word的'声明'在函数声明中进行。正如您在此行上看​​到的那样,您可以在该行上找到$word。这足以让PHP解析器知道在这个函数范围内的第一个字段将被称为单词。然后该函数在稍后的行echo " {$word} hello world a second time ";上反应出该变量,其中$word再次存在,打印出您设置为此行上第一个参数值say_helloTWO("my name is mike");的值。

好问题。

+0

我确实有一个整体的问题小东西不明确的东西。因此,按照这种方式,以这种特殊方式,由于在该功能块中$ word等于“我的名字是mike”,是否在该函数声明中设置了一个临时变量,如果是,那么这是否意味着,该页面,该var2不会有相同的价值?或者它在该页面的任何地方都可用? – somdow

+0

它只在函数调用的范围内可用。这意味着'$ word'只在函数的大括号内定义。 –