究竟什么作为PHP函数的参数传递?

时间:2011-05-15 17:24:27

标签: php

经过几个月试图了解PHP框架,用基本的PHP知识从一个移动到另一个我决定用框架称它为一天,然后回到PHP书籍并从头学习,以便将来在不久的将来,我可以开始构建我的网站mvc风格,而不必学习一些其他框架,这些框架将在新版本出现时被放弃。

无论如何,我购买了Oriely Media的学习PHP,MySQL和Javascript的书,并且一直在练习并且发现它非常有趣。

...无论其

我正试着解决这个问题:

<?php

echo name_fixer("WILLIAM", "henry", "gAtEs");

function name_fixer($name1, $name2, $name3) {
    $name1 = ucfirst(strtolower($name1));
    $name2 = ucfirst(strtolower($name2));
    $name3 = ucfirst(strtolower($name3));

    return $name1 . " " . $name2 . " " . $name3;
} 

我知道发生了什么,但我的问题是当函数被调用/ echoed是我传递给函数的参数传递的名字?

我想确切知道发生了什么。出于某种原因,这是本书迄今为止唯一的部分,作者还没有详细了解究竟发生了什么。

我将非常感谢您的全面解释,并允许我继续阅读本书的下一部分。

3 个答案:

答案 0 :(得分:2)

是的,您作为参数传递的名称将传递给函数。

myFunction ('a','b'); // call myFunction, passing 2 values

// function receives 2 values
function myFunction($argument1, $argument2) { // <-- function declaration
  echo $argument1 . "<br/>";
  echo $argument2 . "<br/>";
}

我们的想法是将值传递给函数,然后将这些值放入函数声明参数中指定的变量中。

您可以根据需要调用参数变量,因此它们不必是$argument1或其他任何变量。它们的分配顺序与传递的顺序相同,因此'a'被赋值给$ argument1,'b'被赋值给$ argument2。

它还有很多东西,比如传递不仅仅是一个值(你也可以传递数组和对象之类的东西),你也可以通过引用传递等等。但是你应该在你的书。这里的总点是你将一个值传递给函数,并且在参数区域中指定的变量接收这些值,这样函数就可以用它们来做。

答案 1 :(得分:1)

第一行使用第一个,中间名和姓氏调用name_fixer,然后打印函数的输出。 name_fixer将三个名称作为参数,并对每个名称执行以下操作:

将名称转换为小写:strtolower("WeeEeeEE") = "weeeeeee"

首字母大写:ucwords("weeeeeee") = "Weeeeeee"

然后该函数返回一个包含由空格分隔的三个固定名称的字符串。

答案 2 :(得分:1)

在我看来(至少基于这个例子)你买错了书。 您发布的功能使用反模式,应该这样写:

function fixName($name)
{
    $fixedName = ucfirst(strtolower($name));

    return $fixedName;
}

...然后调用每个名字。

它的作用:

它将所有字母更改为小写,然后将第一个字母更改为大写。 它返回格式正确的名称。

附加提示:使用动词代替名词而不是名词。它使代码更易读。一个函数通常'做'某事(动词)而不是'是'某事(名词)。

fixName($name)

...比

更容易阅读
nameFixer($name)