php 基础知识

1.echo、print 或 printf 之间的区别

echo、print和printf都是用于在PHP中输出内容,但它们之间存在一些细微的差异:

  1. echo:它是PHP中的输出语句,可以用于输出字符串、数字、变量等。echo语句没有返回值,因此不能用于函数中。它可以连续输出多个变量,例如:echo "Hello, " . $name . "!";。
  2. print:它是PHP中的打印函数,用于输出字符串或变量的值。print函数有一个返回值,可以返回打印的字符数。它可以连续输出多个变量,例如:print "Hello, " . $name . "!";。
  3. 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 ?? $cNULL合并操作符从左往右第一个存在且不为 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:在该字符串中查找。
  • needleneedle可以是一个单字符或者多字符的字符串。如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符顺序值。
  • offset:可选的 offset 参数允许你指定从 haystack 中的哪个字符开始查找,返回的位置数字值仍然相对于 haystack 的起始位置。

返回 needle 存在于 haystack 字符串开始的位置(独立于偏移量)。同时注意字符串位置起始于 0,而不是 1。如果未发现 needle 就将返回 false

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值