1.echo、print 或 printf 之间的区别
echo、print和printf都是用于在PHP中输出内容,但它们之间存在一些细微的差异:
- echo:它是PHP中的输出语句,可以用于输出字符串、数字、变量等。echo语句没有返回值,因此不能用于函数中。它可以连续输出多个变量,例如:echo "Hello, " . $name . "!";。
- print:它是PHP中的打印函数,用于输出字符串或变量的值。print函数有一个返回值,可以返回打印的字符数。它可以连续输出多个变量,例如:print "Hello, " . $name . "!";。
- printf:它是PHP中的格式化输出函数,可以用于输出格式化的字符串。printf函数允许您指定格式和类型,例如:printf("Hello, %s!", $name);。printf函数也可以用于输出变量的值,但需要使用占位符指定变量的位置和类型。
综上所述,echo、print和printf之间的主要区别在于它们的语法和功能。echo和print是语言结构,没有返回值,而printf是函数,有返回值。echo和print可以连续输出多个变量,而printf可以指定输出格式和类型。
2.PHP变量
因为 PHP 是一种弱类型的语言,所以使用变量前不用提前声明,变量在第一次赋值时会被自动创建,这个原因使得 PHP 的语法和 C 语言、Java 等强类型语言有很大的不同。
声明 PHP 变量必须使用一个美元符号 $
后面跟变量名来表示,然后再使用 =
给这个变量赋值。
2.PHP数据类型
1.PHP变量
因为 PHP 是一种弱类型的语言,所以使用变量前不用提前声明,变量在第一次赋值时会被自动创建,这个原因使得 PHP 的语法和 C 语言、Java 等强类型语言有很大的不同。
声明 PHP 变量必须使用一个美元符号 $
后面跟变量名来表示,然后再使用 =
给这个变量赋值。
在 PHP 中,为一个变量赋值的方式有三种,分别是直接赋值、拷贝赋值和引用赋值
$name = "PHP入门教程";
$a = 100;
3 $b = $a; // 将$a的值复制一份,传给$b
4 $a = 200; // 重新为 $a 赋值
$a = 100;
3 $b = &$a; // 将$a的地址复制一份,传给$b
4 $a = 200; // 重新为 $a 赋值
2.PHP可变变量
PHP 中有一个特殊的变量——可变变量。所谓可变变量就是一个变量以另外一个变量的值作为变量名。这种语法形式是 PHP 的特殊语法,其他语言中很少见。
一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。利用这一特性我们可以动态的设置和使用一个变量的变量名。
声明可变变量的方法非常简单,只需要在变量名前加上至少两个 $
符号即可.
2.define() 和 const:定义常量
define(string $name, mixed $value [, bool $case_insensitive = false])
$case_insensitive | 可选参数,指定是否大小写敏感,默认是大小写敏感的,设定为 true 则表示大小写不敏感 |
3.魔术常量
魔术常量属于特殊的预定义常量,这些常量可以根据它们的使用位置而变化。魔术常量通常以两个下划线 __
开头,并以两个下划线 __
结尾。
PHP 中魔术常量有八个,如下所示:
__LINE__
:文件中的当前行号;__FILE__
:当前文件的绝对路径(包含文件名);__DIR__
:当前文件的绝对路径(不包含文件名),等价于dirname(__FILE__)
;__FUNCTION__
:当前函数(或方法)的名称;__CLASS__
:当前的类名(包括该类的作用区域或命名空间);__TRAIT__
:当前的trait
名称(包括该trait
的作用区域或命名空间);__METHOD__
:当前的方法名(包括类名);__NAMESPACE__
:当前文件的命名空间的名称。
3.PHP 逻辑运算符
逻辑运算符 | 示例 | 何时结果为真 |
---|---|---|
&& 或 and(逻辑与) | $m && $n 或 $m and $n | 当 $m 和 $n 都为真时结果为真,$m 和 $n 有任意一个为假时结果为假 |
|| 或 or(逻辑或) | $m || $n 或 $m or $n | 只要 $m 和 $n 中有任意一个为真,则结果为真 |
xor(逻辑异或) | $m xor $n | 当 $m 和 $n 一真一假时,结果为真 |
!(逻辑非) | !$m | 当 $m 为假时,结果为真 |
4.PHP比较运算符
例子 | 名称 | 描述 |
---|---|---|
$a == $b | 等于 | 如果类型转换后 $a 和 $b 的值相等,则返回 TRUE,否则返回 FALSE |
$a === $b | 全等 | 如果 $a 和 $b 不仅值相等,而且它们值的类型也相等,则返回 TRUE,否则返回 FALSE |
$a != $b | 不等于 | 如果类型转换后 $a 的值不等于 $b 的值,则返回 TRUE,否则返回 FALSE |
$a <> $b | 不等于 | 与 != 相同,如果类型转换后 $a 的值不等于 $b 的值,则返回 TRUE,否则返回 FALSE |
$a !== $b | 不全等 | 如果 $a 的值不等于 $b 的值,或者它们值的类型不同,则返回 TRUE,否则返回 FALSE |
$a < $b | 小与 | 如果 $a 的值小于 $b 的值,则返回 TRUE,否则返回 FALSE |
$a > $b | 大于 | 如果 $a 的值大于 $b 的值,则返回 TRUE,否则返回 FALSE |
$a <= $b | 小于等于 | 如果 $a 的值小于或者等于 $b 的值,则返回 TRUE,否则返回 FALSE |
$a >= $b | 大于等于 | 如果 $a 的值大于或者等于 $b 的值,则返回 TRUE,否则返回 FALSE |
$a <=> $b | 太空船运算符(组合比较符) | 当 $a 小于、等于、大于 $b 时 分别返回一个小于、等于、大于 0 的整型值。 PHP7 开始提供. |
$a ?? $b ?? $c | NULL合并操作符 | 从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7 开始提供。 |
三元运算符的语法
1(expr1)?(expr2):(expr3); //表达式1?表达式2:表达式3
<?php $a = 10; $a % 2 == 0 ? print '$a 是偶数!' : print '$a 是奇数!'; ?>
$a 是偶数!
4.PHP 定界符
定界符 <<<
是从 PHP4.0 开始支持的,用于定义一段格式化的文本,格式化是指文本中的格式将被保留,所以文本中不需要使用转义字符。在使用时后接一个标识符,然后是格式化的文本(即字符串),最后使用同样的标识符结束字符串,这段格式化的文本也可以称为长字符串。
为什么使用定界符
因为 PHP 是一个 Web 编程语言,在编程过程中难免会遇到使用 echo
来输出大段的 HTML 代码或者 Javascript 脚本的情况。如果用传统字符串输出的话,肯定要使用大量的转义字符来对字符串中的特殊字符进行转义,比如单引号 ''
、双引号 ""
等等,难免会出现语法错误。
而 PHP 中的定界符能够定义一段较长的字符串,并且可以按照原样输出在其内部的东西,包括换行、缩进等格式,在定界符中的任何特殊字符都不需要转义,而且定界符中的变量也能被解析。这也是为什么 PHP 要引入定界符的原因之一。
其中,符号 <<<
是关键字,必须使用;str
为我们自定义的标识符,用来当作文本的起始标识符和结束标识符,前后的标识符名称必须完全相同。
另外,结束标识符后面的分号不能省略,同时结束标识符必须另起一行顶头写。还有就是标识符的命名必须遵循 PHP 中其他标签的命名规则:只能包含字母、数字、下划线,而且必须以下划线或非数字字符开始。
需要注意的是,使用定界符定义的字符串中虽然能解析变量,但是不能进行运算。
<?php
2 $website = 'LintCode 课程';
3 $url = 'https://www.lintcode.com/';
4 $title = 'PHP 教程';
5 $str = <<<str
6 <!DOCTYPE html>
7 <html>
8 <head>
9 <title> $title </title>
10 </head>
11 <body>
12 您正在访问的是:<strong style="color:red">$website</strong><br>
13 网址:<a href="$url" target="_blank">$url</a>
14 </body>
15 </html>
16str;
17 echo $str;
18?>
5.PHP goto:跳转到程序的指定位置
goto
操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记(例如 name:
),而跳转指令是 goto
之后接上目标位置的标记。
PHP 中 goto
操作符的使用有一定限制:
goto
跳转的目标位置只能位于同一个文件和作用域内;goto
无法跳出一个函数或类方法,也无法跳入到另一个函数;goto
无法跳入到任何循环或者switch
结构中;goto
可以跳出循环或者switch
。
我们通常是使用 goto
代替 break
来跳出嵌套的多层循环,goto
本身并没有跳出循环的作用,但其跳转到指定位置的作用使得其可以代替 break
来跳出循环。
和其他语言一样,PHP 中并不鼓励滥用 goto
,滥用 goto
会导致程序的可读性严重下降。
6.PHP die() 和 exit() 函数:输出一个消息并退出当前脚本
在 PHP 中,die()
和 exit()
函数的用法和作用是一样的,都可以输出一个消息并且退出当前程序。
其实 exit
和 die
这两个名字指向的是同一个函数,die()
是 exit()
函数的别名。该函数只接受一个参数,可以是一个具体的数值,也可以是一个字符串,还可以不输入任何参数,另外 die()
和 exit()
这两个函数是没有返回值的。
7.PHP 字符串查找
stripos()
stripos()
用来查找字符串中某部分字符串首次出现的位置(不区分大小写)。
语法如下:
1int stripos ( string $haystack , string $needle [, int $offset = 0 ] )
参数说明如下:
haystack
:在该字符串中查找。needle
:needle
可以是一个单字符或者多字符的字符串。如果needle
不是一个字符串,那么它将被转换为整型并被视为字符顺序值。offset
:可选的offset
参数允许你指定从haystack
中的哪个字符开始查找,返回的位置数字值仍然相对于haystack
的起始位置。
返回 needle
存在于 haystack
字符串开始的位置(独立于偏移量)。同时注意字符串位置起始于 0
,而不是 1
。如果未发现 needle
就将返回 false
。