目录
PHP概述
- PHP是一门编程语言,PHP主要目的是允许网络开发人员快速编写动态页面
- 简单来说PHP主要被用于开发各种类型的网站程序
- 细化点说PHP可以用于收集表单数据,生成动态网页,字符串处理,动态输出图像,处理服务端文件,与数据库交互,会话跟踪,处理XML文件,支持大量的网络协议,服务器端的其他相关操作!
- PHP是解释型脚本语言不需要事先编译,运行在服务器端!
- PHP可以运行在windows、linux等各种操作系统上!
专门用于开发网站的
脚本后缀名.php 可以与HTML语言进行混编,脚本后缀依然是.php(还可以在PHP代码中输出HTML语言)
解释型语言,不要编译直接运行
弱类型
PHP运行需要环境:
Windows: phpstudy
Linux: 单独安装(不是系统自带的)
PHP运行环境安装
Apache+PHP+MySQL是PHP比较流行的生存环境
LAMP
Web原理简述
1.打开浏览器
2.输入URL地址
3.显示网站内容
PHP 基本语法
PHP 语言标记
开始标记 <?php
结束标记 ?>
特点:
1、<?php?>这之间就表示进入PHP模式,在开始和结束处之外的内容都会被PHP解析器忽略
2、可以直接嵌入到html代码中,并且可以嵌入到html代码中的任何地方
3、在一个html文档中可以嵌入任意多个PHP标记
4、文件末尾的PHP代码结束标记可以不要,在一些情况下省略掉更好
指令分隔符 [;]
一个php语句必须(建议)要用分号结束
注释(和C语言类似)
单行注释 //
多行注释 /* */
注意:
php代码中注释,不会显示在浏览器的源代码中。
php运行环境是服务器,我们浏览器看到的是PHP引擎运行PHP代码后的执行结果
在我们PHP引擎解释PHP代码的时候,注释被自动过滤掉了。
为什么HTML代码客户端可以看到源代码?
因为HTML运行环境是浏览器!
简单的PHP语句
1、phpinfo();
2、echo 用于输出简单的变量
3、var_dump(); 用于输出变量值及其变量类型
PHP语法错误:
Error 会结束脚本执行
Warning 只提示,不影响执行
Notice 只提示,不影响执行
变量
变量的声明
不需要声明变量,但要初始化
初始化
给变量初次赋值,或者变量的默认值
赋值
[=]
根据实验说明:PHP脚本是顺序执行的
引用赋值 $c =&$a
相当于给$a起了一个别名,$c值的改变,$a也随之改变
<?php
$a=10;
$b=$a;
$b=$b+1;
echo $a; //10
echo "|";
echo $b; //11
echo "<hr />";
$c=&$a; //$a和$c实际上指向的是同一块内存空间(相当于给$a起了一个别名)
$c=$c+1;
echo $a; //11
echo "|";
echo $c; //11
?>
变量的释放
unset()
<?php
echo "This is var.php";
echo "<hr />";
echo "<span style='color:pink;background-color:blue'>123</span>";
?>
//一个页面中可以插入多个PHP标记(不能混用)
<hr />
<?php
//PHP在使用变量的时候不需要进行变量声明,
//如果一个变量没有初始化,内存中就没有这个变量。
echo $name;
$name="AJEST";
echo "<br />";
echo $name;
echo "<br />";
unset($name); //释放了变量
echo $name;
?>
变量的命名
@ 以$符号开头
@ 严格区分大小写
@ 字母|数字|下划线,不能以数字开头
$name1
$my_name
$_my_name
$1_name 错误
@ 尽量不要使用php关键字作为变量名
可变变量
<?php
$name="hello";
$$name="world";
echo $name; //输出hello
echo "<br />"
echo $$name; //world
echo $hello;//实际上$hello是$$name
?>
变量的类型
布尔类型
true false,其他均会被认为true
以下所有内容会被当做false
布尔值false
0
浮点型0.0
空白字符串和字符串0
没有成员的数组
NULL
var_dump(); 用于输出变量值及其变量类型
int 存储整数
float 存储小数 3.14
字符串 string
字符串的定义:
@ ' '
@ " "
@ 定界符
注意:
@单引号定义的字符串中出现单引号要转义[\]
@单引号定义的字符串中,[$] 符号原样输出
@双引号定义的字符串中,[$] 是变量的开始,整体变量名用{ }括起来
@单双引号定义的字符串中输入的特殊字符包括 [ ' , " , $ ...]需要转义
@定界符开始和结束后面不能有任何字符包括空白字符和注释
数组
对象 不讲
常量
不变的量
定义 define("NAME","GGG");
直接使用即可
预定义常量
常量名 常量值
__FILE__ 当前的文件名(文件名带路径)
__LINE__ 当前的行数
__FUNCTION__ 当前的函数名
__CLASS__ 当前的类名
__METHOD__ 当前的对象的方法名
PHP_OS UNIX或WINNT等
PHP_VERSION 当前的PHP服务器的版本
DIRECTORY_SEPARATOR \或/ 根据操作系统决定目录的分隔符
运算符
算术运算符(见代码)
取模就是取余数。
逻辑运算符
非 !
与 and 或者 &&
或 or ||
异或 xor 不同为真,相同为假
与运算的优先级高于或运算。
赋值运算符的优先级高于逻辑运算符
运算符优先级
括号的使用,哪怕在不是必要的场合下,通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
结合方向 | 运算符 | 附加信息 |
---|---|---|
不适用 | clone new | clone 和 new |
右 | ** | 算术运算符 |
不适用 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型、递增/递减 |
左 | instanceof | 类型 |
不适用 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + - . | 算术运算符 和 字符串运算符 |
左 | << >> | 位运算符 |
无 | < <= > >= | 比较运算符 |
无 | == != === !== <> <=> | 比较运算符 |
左 | & | 位运算符 和 引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
右 | ?? | null 合并运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= **= /= .= %= &= |= ^= <<= >>= ??= | 赋值运算符 |
不适用 | yield from | yield from |
不适用 | yield | yield |
不适用 | print | |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
比较运算符
例子 | 名称 | 结果 |
---|---|---|
$a == $b | 等于 | true ,如果类型转换后 $a 等于 $b。 |
$a === $b | 全等 | true ,如果 $a 等于 $b,并且它们的类型也相同。 |
$a != $b | 不等 | true ,如果类型转换后 $a 不等于 $b。 |
$a <> $b | 不等 | true ,如果类型转换后 $a 不等于 $b。 |
$a !== $b | 不全等 | true ,如果 $a 不等于 $b,或者它们的类型不同。 |
$a < $b | 小与 | true ,如果 $a 严格小于 $b。 |
$a > $b | 大于 | true ,如果 $a 严格大于 $b。 |
$a <= $b | 小于等于 | true ,如果 $a 小于或者等于 $b。 |
$a >= $b | 大于等于 | true ,如果 $a 大于或者等于 $b。 |
$a <=> $b | 太空船运算符(组合比较符) | 当$a小于、等于、大于 $b时 分别返回一个小于、等于、大于0的 int 值。 |
当两个操作对象都是 数字字符串, 或一个是数字另一个是 数字字符串, 就会自动按照数值进行比较。 此规则也适用于 switch 语句。 当比较时用的是 ===
或 !==
, 则不会进行类型转换——因为不仅要对比数值,还要对比类型。
比较参与运算的单元是否相同,相同为真,不同为假
<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true
switch ("a") {
case 0:
echo "0";
break;
case "a": // never reached because "a" is already matched with 0
echo "a";
break;
}
?>
赋值运算符
算术赋值运算符 ¶
例子 | 等同于 | 操作 |
---|---|---|
$a += $b | $a = $a + $b | 加法 |
$a -= $b | $a = $a - $b | 减法 |
$a *= $b | $a = $a * $b | 乘法 |
$a /= $b | $a = $a / $b | 除法 |
$a %= $b | $a = $a % $b | 取模 |
$a **= $b | $a = $a ** $b | 指数 |
其他赋值运算符 ¶
例子 | 等同于 | 操作 |
---|---|---|
$a .= $b | $a = $a . $b | 字符串拼接 |
其他运算符
$a= 10>20 ? 10:20(三元运算符)
`` 将字符串当作命令执行(不是单引号,是Tab上面的那个键)
@ 屏蔽提示,警告
<?php
$a=10<20?10:20;
echo $a;
echo "<hr />";
echo `ping www.baidu.com`;
?>
<hr />
<?php
echo `whoami`;
echo "<hr />";
echo @$name; //直接写$name会报Notice,在前面加一个@,屏蔽警告、提示
?>
流程控制语句
顺序执行
PHP代码执行的时候,依次顺序执行
分支执行
单向分支
if(判断条件){执行语句块}
双向分支
if(判断条件){执行语句块1}else{语句块2}
多向分支
if(判断条件){执行语句块1}elseif{语句块2}elseif{语句块3}....
elseif
switch
case
default
case后面的语句是不需要用大括号括起来的!
循环语句
while
当满足条件时,执行
计数器,变量
判断条件
do while
先执行再判断
for(好!)
特殊流程控制语句
break; 跳出本层循环
break 2; 跳出两层循环
continue; 跳过本次循环
die() 结束本次脚本执行
exit() 结束本次脚本执行
九九乘法表