一、PHP基本语法
1.PHP标记
1)标准的标记
php代码
?>
PHP 支持与HTML混编 ,混编的文件名,以.php结尾。
官方推荐标记。
如果是纯PHP代码建议省略结束标记。
2)
3) 代码 ?>
短标记
改完配置文件,需重启APACHE
4)<%代码%>
ASP风格标记
修改配置文件
重启apache
5)enctype
- enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。
-
默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。
2.语句结束标记
- ;一行语句结束以分号结尾。
- js可以不加分号(自动判断结束,补全分号)。
-
但PHP要严格执行,否则解析出错;
3.注释
- 被注释的代码将不被执行。
- 在注释里面我们可以写程序的说明,可以更好的有利于团队合作。
1)行注释
//
单行代码不被执行
2)块注释
/多行注释/注释多行代码
二、变量
1.变量介绍
- 简言之,存储值的容器。$stuNum = 4;
- 在成语运行过程中,随时可以发生变化的量。
1)定义变量
$开头后面接变量名。
2)变量名的规则
遵循标识符的命名规则,标识符是指在程序员编程过程中起的名字,
如:变量名,常量,函数名。
标识符的命名规则:
①数字字母下滑线组成,不能以数字开头。
②变量名严格区分大小写
③不能使用系统关键字
④建议英文命名,见名识意。
- age 年龄
- 通常有两种方式
- 下滑线命名:
$goods_info 商品信息。
以下划线分割两个或两个以上的单词
下划线线命名一般用于变量名 - 驼峰命名:
a 大驼峰
goodsInfo
常用于函数名
- 下滑线命名:
3)可变变量
是一种特殊的变量。
它的变量名 是 另外一个变量的值。
4)变量在内存中的表现形式
- 变量由变量名和变量值组成;
$a =100; - 内存,用来存储运行的的程序。
-
变量名,和变量值,是存储在内存中的不同位置。
- 内存组成:
栈区:空间小,运行速度快,存储,变量名,函数名,常量名等。
堆区:空间大,但运行速度慢,一般存储复杂数据(数组,和对象等)。 - 全局数据区: 存储变量值,常量值等。
- 代码区: 存储函数,方法等。
- 案例
$a =100;
创建变量时,将变量值100 存储在全局数据区的变量区(产生存储地址0x10001000)
在栈区开辟空间,存储变量名$a,将变量值得存储地址,存储在变量命中。
- 读取变量时
读取$a, 先到栈区,拿到在变量区的存储地址0x10001000,去此地址去读取值。
2.变量操作
1)变量声明
- 变量声明和赋值同时进行。
- 变量不需要指定数据类型
- PHP变量有类型。
变量的值决定了变量的类型。 -
PHP是弱类型语言。
在程序运行变量还可以设置为其他类型的值
2)获取变量的值
3)常见的输出语句
-
Echo 语句
输出字符串,变量或者表达式。
同时可以输出多个。是语言结构
-
Print语句
也可以输出字符串,变量或表达式。
不支持输出多个。也是语言结构
-
var_dump
输出一个或者多个变量的类型,长度和值。
一般用于打印复杂变量(数组和对象等)
-
print_r 输出变量的值
输出结果较var_dump简洁。
4)变量值的修改
age= 19;
5)删除变量
- 删除变量名与变量值之间的关系。形成未定义变量。
- 变量名和变量值不会立即消失。
- PHP有专门的垃圾回收机制来处理。
unset($var)
6)mysql_connect() 函数打开非持久的 MySQL 连接
格式
mysql_connect(server,user,pwd,newlink,clientflag)
3.变量传值
将一个变量传递给另外一个变量。
1) 值传递
num2 = $num1;
- 获取$num1的值。
- 在变量区存储100,产生新地址0x10001001,
- 在栈区,创建变量名num2中
-
修改一个变量的值,另外一个变量不会改变。
删除一个变量,对另外一个变量没有影响。
2)引用传递
地址传递
num2 = &$num1; &取地址符号,它传递的是地址。
执行过程
- 先获取$num1值的地址0x10001000;
- 在栈区开辟空间,创建变量$n2,存储地址0x10001000;
-
修改一个变量的值,另外一个变量也会改变。
删除一个变量,对另外一个没有影响。
4.预定义变量
PHP提前定义好的变量,直接使用,无需定义。
1)$_SERVER
["SERVER_NAME"]=> 服务器名
string(15) "www.default.com"
["SERVER_ADDR"]=> 服务器地址
string(9) "127.0.0.1"
["SERVER_PORT"]=> 服务器端口号
string(2) "80"
["REMOTE_ADDR"]=> 客户机地址(remote,远程的意思)
string(9) "127.0.0.1"
2)$_GET
HTTP GET方式提交过来的数据
通过浏览器地址栏传递数据,数据的安全性较低
案例:
form.html 文件代码
菜鸟教程(runoob.com)
当用户点击 "Submit" 按钮时,发送到服务器的 URL 如下所示: http://www.runoob.com/welcome.php?fname=Runoob&age=3
"welcome.php" 文件现在可以通过 _GET 数组中的键):
欢迎 !
你的年龄是 岁。
3)$_POST
HTTP POST方式提交过来的数据
4)$_REQUEST
POST + GET的数据
三、常量
1.说明
程序运行过程中,值不会发生改变的量。
常量不能修改和删除。
1)语法
define(常量名,常量值,true/false);
2)注意
- 常量默认区分大小写。
- 常量名推荐使用大写
- 常量不可以重复定义和修改数据。
-
如果第三个参数设为true,常量不区分大小写。
2.常量的获取
1)使用常量名
直接使用常量名获取。
constant()
可以获取特殊的常量。
3.常量在内存中的表示形式
常量区不可以修改。
不可以重新定义或者修改值。
4.预定义常量
1)get_defined_constants()
2)魔术常量
它的值会随着在代码中的位置的改变而改变。
①_ DIR _
当前脚本所在的目录
②_ LINE _
获取当前行号。
③_ FILE _
获取当前脚本的路径+文件名。
四、HP 数据类型
1.标量数据类型
一般指单个数值。
整形,浮点型,字符串类型,布尔类型。
2.复合数据类型
包括数组和对象。
一般包含多个数值,数组中会有多个元素,对象里面会有多个成员属性和成员方法。
3.特殊类型
1)null :
变量未赋值
变量被删除
变量被赋值为null
2)resource
资源类型
4.整型类型
integer
1)整型的表现形式
- 半斤八两, 一斤16两 ,十六进制。满16进1
- 一小时60分钟,一分钟60秒, 六十进制。满60进1
- 计算机底层 二进制,满2进1
- 十进制 最常用(0-9)
- 二进制(0 1) 八进制(0-7) 十六进制(0-9-A-F)
- 八进制 017 一般以0开头
- 十六进制0x1a 一般以0x开头
-
PHP_INT_MAX 整形最大值
PHP_INT_SIZE:表示整形占据的字节数。4个字节。
2)其他进制转换为十进制
按权展开
123 = 3100 +2101 + 1102
017(八进制) = 780 +181 = 15
0xa8(十六进制) = 8160 + 10*161 =168
3)二进制、八进制、16进制之间的转换
一个8进制可以转换成三个二进制位
一个16进制可以转换成四个二进制位
017(八进制) = 001,111(二进制)
010,001,000(二进制) = 210 (八进制)
4)十进制转换为其他进制
转换原则:
整数部分: 除基倒取余 基是指几进制的几 10(十进制)->1010(二进制)
小数部分:乘基 正取整。
乘x取整,直到小数部分为0,整数部分自上而下组织 0.25 ->0.01
5)进制转换函数
decbin(int): 十进制转二进制
decoct(int): 十进制转八进制
dechex(int): 十进制转十六进制
bindec(string): 二进制转十进制
octdec(string): 八进制转十进制
hexdec(string): 十六进制转十进制
5.浮点型类型
价格:99.9 重量:127.3斤
1)浮点数的表现形式
常用格式:1.2 2.3 12.5
科学计数法 1.234e2 eN表示10的N次方
2)说明及注意事项
浮点数是近似的,比较两个浮点数相等是有问题的
最多是14位有效数字 有效数字指从左边第一个不是零的数字算起。
- 表示范围-1.810^308-----1.810^308
- 其他编程语言,如C JAVA 有单精度和双精度之分PHP 只实现了双精度
- 整数范围无法表示的数字,可以使用浮点数。
- 超出整数范围,自动使用浮点数。
-
浮点数占据的空间大。
6.布尔类型介绍
true,false 表示事物的真假状态。
true 和false 不区分大小写 建议小写
TRUE ,FALSE
1)逻辑判断为假(false)的情况。
整数 0
浮点数 0.0
字符串 ‘0’
字符串 ’’ ‘ ’有空格和小数为true
空数组
null
2)isset()
测试变量是否设置
变量未设置或者设置为NULL,返回false,其他返回true。
3)empty()
判断变量是否为空
逻辑判断为false的变量,使用empty判断,返回true。
4)is_type 系列函数
is_int/is_integer 判断是否是整形
is_float/is_double/is_numeric (判断是否是数值)
is_string (判断是否是字符串)
is_boolean/is_bool
is_array
is_null
is_resource
五、类型判断与转换
1.gettype()
得到的结果:boolean,integer,
double (浮点型返回double,不是float)
string
array
object
null
resource
2.自动转换
PHP 本身是弱类型语言,支持类型的自动转换,数据在参与运算时,会根据实际环境自动转换类型,参与运算。
1)字符串转换为数值类型
遵循原则:
- 纯数字的字符串转换位相应的数字。
- 以数字开头的字符串,转换成相应的数字。
- 不以数字开头的字符串,转换位0
-
布尔值true 转换为1,false转换为0
3.类型强制转换
转换原则:与类型自动转换原则一致。
类型字符串:
int
bool
float
string
array
object
(类型字符串)变量
4.自动转换和强制转换比较
- 转换之后,原始数据类型不发生转换,只是数据参与的值发生了改变。
-
自动转换的原则和强制转换的原则一致。
5.settype()
- 将变量设置为指定的类型
- settype($var, ‘类型字符串’);
- 返回值为true,或者false
-
会改变变量的值。