PHP脚本通常与文件扩展名.php一起保存,以表示其类型。每当您的Web服务器被要求发送以.php结尾的文件时,它首先将其短语发送到php解释器,该解释器在将生成的文件返回给最终用户之前执行脚本中的任何PHP代码。 php代码的基本单元称为语句,以分号结尾,表示它是一个完整的语句。一行代码通常只包含一个语句,但您可以根据需要在一行中包含尽可能多的语句。

喜欢php的人会想指出打印在技术上不是一个功能,从技术上来说它们是正确的。这就是为什么打印在传递给数据时不需要数据括号的原因。您可以将括号与这些结构一起使用,这样做是无害的。虽然在表面上,印刷和回声看起来是相同的,但它们不是。 print构造比echo更有可能是一个函数,因为它返回一个值(1)。但是,echo更有用,因为您可以传递几个参数。

php中的变量,这些是存储数据的东西,它们以$开头,后跟字母或下划线,然后是字母,数字和下划线字符的任意组合。在PHP变量中不要以数字开头。变量也区分大小写。所以$ N和$ n有两种不同的含义。

您可以通过编写变量名称后跟“=”符号然后再使用其值来分配变量,并使用分号(;)结束该语句。

在那里我们将$ a变量设置为字符串Donald,并且php允许我们在您的名字后打印出该变量。因此,第一个print语句的输出是谁是唐纳德,因为只要它自己找到它,或者在双引号字符串中,php就会用$ a替换它的值。

之后我们将$ name_2设置为$ a,这有效地将$ a的值复制到$ name_2中。 $ name_ 2现在是唐纳德。我们还将$ age变量设置为数字77.我们的第二个print语句一次输出两个变量,同样,php将在字符串中替换它们。

但是,最后一份印刷声明不会用唐纳德取代$ a。相反,它会打印出来。

原因是php不会在单引号字符串中执行变量替换,甚至不会替换大多数转义字符。在双引号字符串中,PHP将用单引号字符串替换$ a及其值。 PHP会考虑$ a意味着你实际上希望它输出下一个$ a就像那样。

当你想在字符串中追加变量时。 PHP可能会认为字符是变量的一部分。例如:

虽然期望的输出是这些芒果尚未成熟,但实际输出有点不同,因为我们在变量名称的末尾添加了“s”,我们已将其从尝试读取$ fruit更改为尝试读取$果实。变量$ fruits不存在,因此PHP会将空格留空并可能生成错误。有两种方法可以解决它:

大括号{和}在技术上用于在字符串中使用时发出变量信号,但在上面的示例中,它们用于告诉PHP变量的结束位置。您不需要使用大括号,其中附加到变量的字符会使变量名称非法,如下所示:

这将有效,因为您不允许使用撇号作为变量名称的一部分。

打开PHP代码岛有很多方法,欢迎您选择自己喜欢的方式。推荐的方式是使用离开php模式,但你也可以使用短标签版本.

简短版本有一个很大的优点和两大缺点,您可以通过使用特殊的短标签hack从脚本输出信息, <?=, like this.

短标签版本更紧凑,阅读起来有点难。然而,短版本的第一个缺点是它与XML有冲突,而XML也使用<? to open code blocks. This means that if you try to use XML and short tagged php together, you will encounter problems this is the primary reason people recommend using the normally open and close tags. Short tags are always dangerous because they can be disabled in the php configuration file, php.ini, which means your scripts may not be portable.

PHP允许您根据条件的结果选择要采取的操作。这种情况可以是您选择的任何条件,您可以结合条件采取更复杂的行动。这是一个例子:

在最基本的层面上,php评估if语句是否从左到右,这意味着它首先检查$ age是否大于或等于18,然后检查$ age是否小于50. double ampersand,&&表示两个语句必须如果打印出“你生命中最重要的代码”,那么就应该执行,如果任何一个陈述由于某种原因而不是真的,那么“你不是生命的巅峰”就会打印出来代替。当运算符优先级很重要时,检查条件的顺序会有所不同。

除了&&之外,还有||这意味着OR。在这种情况下,如果检查的任何条件为真,则整个语句被评估为true。

如果语句为真,则要执行的代码在其自己的块中,否则要执行的代码在else块中。这会阻止php尝试执行true和false操作。

需要注意的一个关键点是php实践“if语句短路”这是php将尽可能少的条件工作,所以它基本上停止检查条件语句,只要它确定它可以停止。

For example

如果将$ age评估为8,则第一次检查($ age> 10)将失败,因此php将不会对20进行检查。这意味着您可以检查变量是否已设置以及是否设置为某个值 - 如果如果没有设置变量,php将短路if语句而不检查其值。这很好,因为如果你检查一个unset变量的值,php会标记一个错误。

if语句的一个有用的补充是elseif语句,它允许您以更智能的方式将条件链接在一起。

您可以使用if语句实现相同的效果,但使用elseif更容易阅读。该系统的缺点是$ age变量需要多次检查。

当你有一系列条件在上面的例子中都是相同的变量时,你的if ... elseif块会变得难以处理。 php有一个解决方案,这是一个switch case语句。在switch case块中,指定要检查的内容,然后列出要处理的可能值。使用switch / case语句,我们可以像这样重写前面的脚本:

Switch / case语句经常用于检查各种数据,并且它们占用的空间比等同的if语句少得多。

php switch / case语句代码中有两个重要的注意事项。首先,默认情况下没有单词大小写,这就是语言的工作原理。其次,我们上面的每个案例行动都以“休息”结束。这是因为一旦php在其案例列表中找到匹配项,它将执行该匹配项的操作以及其下所有匹配项的操作。

如果php在其他一种情况下没有找到匹配项,或者如果它之前的情况被执行并且没有以break语句结束,则执行默认情况。

关键字break意味着“退出switch / case语句”,并具有阻止php在匹配后执行所有后续情况的操作的效果。

PHP有以下循环关键字,foreach,while,for和do ... .while。

foreach循环用于处理数组,并通过迭代数组中的每个元素来工作。您也可以将它用于对象,在这种情况下,它会迭代该对象的每个公共变量。

foreach最基本的用法只提取每个数组元素的值,如下所示:

这里数组$ array循环遍历,其值被提取到$ val。在这种情况下,数组键被完全忽略,这通常在自动生成时最有意义。

您也可以使用foreach来提取密钥,如下所示:

使用对象时,语法是相同的:

PHP,while循环仅用于执行代码块,只要给定条件为真。例如,此代码将从1循环到10,随时打印出值。

请注意,同样,php使用代码块来表示循环的范围,而循环以一个开括号{并以一个右括号(})结束,以清楚地告诉php它应循环通过哪些代码行。

与if语句一样,您可以在循环中放置您选择的任何条件,但是每次循环更改条件的值至关重要;否则,循环将永远执行。虽然循环最常用于递增列表,其中循环的迭代次数没有已知限制。

更常见的循环形式是for循环,稍微复杂一些。 for循环由声明,条件和动作组成,声明是声明循环计数器变量并设置为字符串值的条件,条件是根据值检查循环计数器变量的位置,动作是在每次迭代结束时应该发生什么来改变循环计数器。

这是一个for循环的例子,它在php中的样子。

如您所见,for循环有三个部分用分号分隔。在声明中,我们将变量$ i设置为1.对于条件,如果$ i小于10,我们有循环执行。最后,对于动作,我们为每个循环迭代的$ i的值加1 - 也就是说,每次执行循环代码。

运行时,此脚本将从1到10计数,沿途输出文本。请注意,它实际上不会输出数字10,因为我们指定$ i必须小于10,不小于或等于它。

尽管php提供了大量的函数来执行各种任务,但您仍需要在需要时创建自己的函数。如果您发现自己反复做同样的事情,或者想要跨项目共享代码,那么用户函数就适合您。

您可以为您的函数提供您喜欢的任何名称,它们遵循与没有$符号的php变量相同的指导。您可能无法重新定义PHP的内置函数名称不会与现有PHP函数发生冲突 - 仅仅因为您没有可用的imagepng()函数,这并不意味着其他人也不会。

PHP中最简单的用户函数看起来像这样:

使用function关键字定义函数,然后是函数名称和两个括号。函数的实际代码将在大括号之间执行。在函数定义之后,我们可以像处理任何其他函数一样处理foo(),如第5行所示,我们打印出它返回的值。

您可以从函数返回一个值,并使用return语句执行此操作。你可以返回你想要的任何变量,只要它只是一个变量,它可以是整数,字符串,数据库连接等.return关键字将函数返回值设置为你使用它的任何变量,然后立即存在该功能。你也可以使用return;这意味着“退出而不返回值。”如果您尝试为变量分配没有返回值的函数的返回值。您的变量将设置为NULL。

请考虑以下声明:

这将输出In函数,后跟1,然后脚本将终止。我们从未看到离开函数的原因是因为行返回1后退然后立即退出 - 如果永远不会达到foo(),则返回第二个print语句。

您可以通过修改定义以包含任意数量的参数来设计接受参数的函数。您需要为每个参数指定用于在函数内部引用它的名称 - 当您稍后调用该函数时,PHP会将它接收的值复制到这些参数中,如下所示:

运行脚本后,$ mynum将被设置为50. multiply()函数可能已被重写,因此只有一行:返回$ a * $ b,但最好表明你可以使你的函数成为只要你愿意

当涉及到引用时,事情变得更复杂,因为您需要能够通过引用接受参数并且还通过引用返回值。这是通过参考运算符&完成的。

使参数“通过引用传递”在函数定义中完成,而不是在函数调用中完成,即:

is correct, whereas

这个是错的。这意味着如果您在项目中多次使用某个函数,则只需编辑函数定义以使其通过引用获取变量。通过引用传递通常是使脚本更短且更易于阅读的好方法 - 选择很少由性能考虑因素驱动。

与通过引用传递值不同,您在函数定义中指定参数的引用性质,要返回引用,您需要在定义和调用时指定此类。要指定函数应返回引用,请将&符号引用运算符放在函数名称之前,并指定您希望引用函数的结果而不是复制它,使用之前学过的正常引用赋值。

这是看起来如何:

在设计函数时,为未传递的参数指定默认值通常很有帮助。 PHP为其大多数功能执行此操作,并且如果它们通常是相同的,它可以节省您必须在大多数时间传递参数。

要为函数定义自己的默认参数,请在变量后添加要设置的常量值,如下所示:

现在,考虑这个功能:

这并不意味着$ FirstName和$ LastName都应设置为Smith。相反,只有$ LastName获取值 - PHP将这两个变量视为在功能上彼此独立,这意味着您可以使用如下代码:

因此,为了迎接三个名叫约翰史密斯,汤姆戴维斯和汤姆史密斯的人,你会使用这个代码:

如果你想问一个名叫John Wilson的人,理想情况下你会让PHP为你填写第一个参数,因为John是该函数的默认参数,你会提供Wilson部分。但是如果你尝试这样的代码,你会发现它不起作用:

而不是约翰威尔逊,你将获得威尔逊史密斯 - PHP将假设您提供的参数是第一个名称,因为它从左到右填充其参数。相同的逻辑规定您不能在非默认值之前放置默认值,如下所示:

如果有人使用doHello(“Peter”),他们是否会尝试为$ FirstName提供一个值来代替默认值,或者他们想要那里的默认值和Peter的$ LastName吗?希望您能看到为什么PHP会在尝试此操作时标记错误! PHP语言