我知道我可以定义这样的函数:
<?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
,是吗?
答案 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");
如果上述内容对你没有多大意义,那么我认为你可能需要回到基础并研究编程世界中的函数。