经过几个月试图了解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是我传递给函数的参数传递的名字?
我想确切知道发生了什么。出于某种原因,这是本书迄今为止唯一的部分,作者还没有详细了解究竟发生了什么。
我将非常感谢您的全面解释,并允许我继续阅读本书的下一部分。
答案 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)