Php用户定义的函数,(我新需要帮助)

时间:2011-07-08 02:07:02

标签: php user-defined-functions

我知道我可以定义这样的函数:

<?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");
?>

这在屏幕上打印

  

我的名字是第二次迈克你好世界

当我使用参数"my name is mike"测试函数时,它会打印到屏幕,但我不明白 这是如何工作的。变量$word未在任何地方声明,因此,如果我从回显中取出"$word",则只有"hello world a second time“显示没有my name is mike

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

8 个答案:

答案 0 :(得分:2)

在你的第二个函数中$word正在函数定义function say_helloTWO( $word )中声明。

因此该函数需要1个参数,该参数将分配给变量$word,以便在函数中使用

因此,当您致电say_helloTWO( "my name is mike");时,您将1个参数(“我的名字是迈克”)传递给函数say_helloTWO。这个1参数被赋值给函数定义中的第一个变量,因此可以在函数$word中使用。

有意义吗?

答案 1 :(得分:1)

在这种情况下,函数定义被认为是一个参数。

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

当你在代码中调用函数时,在括号中传递的第一个东西将作为第一个参数传递。因此,在您的示例中,字符串"my name is mike"将传递给函数并分配给变量$ word。

如果我们对此进行扩展并且有一个带有两个这样的参数的函数

function say_helloTHREE( $word, $secondArg )

然后这个函数现在希望将两个参数传递给它。第一个参数将分配给$ word,第二个参数将分配给$ secondArg。

答案 2 :(得分: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理解这一点。如果你没有提供论证,它仍然被定义,它只是空的......我相信。

答案 3 :(得分:1)

答案 4 :(得分:1)

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

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

在此代码中,变量$word的“声明”是在函数声明中生成的。正如您在此行function say_helloTWO( $word ) {上看到的那样,您可以在该行找到$word。这足以让PHP解析器知道在该函数范围内将第一个文章称为单词。该函数然后在稍后的行echo " {$word} hello world a second time ";上回显该变量,其中再次出现$word打印出您在此行say_helloTWO( "my name is mike");上设置的第一个参数的值。

好问题。

答案 5 :(得分:0)

它作为参数传递。所以它已经在括号内声明了

答案 6 :(得分: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函数。

答案 7 :(得分:0)

  

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

不,$ word未在功能块中定义,当你拨打电话时,它会被赋予“my name is mike”的值。

换句话说,当你调用函数时定义了$ word:

/* 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");

如果上述内容对你没有多大意义,那么我认为你可能需要回到基础并研究编程世界中的函数。