[PHP语法]PHP基础语法与数据类型
基础语法:
- php是一门弱类型编程语言
- 在.php文件中php代码需要包含在<?php 和 ?> 之间,html可以和php混合编写
- 语句必须以;分号结束
- 变量名前面必须包含$,变量名可以包含字母数字下划线, 但是不能以数字开头, 变量名区分大小写, 变量名不能与关键字相同
数据类型:
- 标量类型:整型,浮点型,布尔型,字符串型
- 复合类型:数组,对象
- 特殊类型:资源,NULL
- 伪类型:混合类型,数字类型,回调类型
变量细节:
- 仅仅定义了变量但是没有赋值,这时候会提示undefined variable var_dump()查看会发现变量是null
整型
- 十进制,十六进制0x, 八进制0
- 不支持无符号整数, 也就是说整数都是有符号的
- PHP_INT_SIZE 整型值的字长 = 4 (字节)/32位
- PHP_INT_MAX 整型值的最大值 = 2147483647 (针对32位) 针对64位就更大了
浮点数
- 浮点数也叫双精度数或实数
- 浮点数的字长和平台有关,通常最大值是1.8E308 并且具有14位十进制数字的精度 (从左边第一个非0数字开始计算)
字符串
- 字符串中一个字符占用一个字节
- 字符串可以用单引号包裹,也可以用双引号包裹
- 单引号包裹时反斜线解析单引号,双引号包裹时反斜线解析双引号
- 双引号包裹的字符串中可以使用反斜线转义字符来转义特殊字符 \n \r \t \e \v \f \\ \" \$
- 双引号包裹的字符串中的变量可以被解析
- 单引号包裹时转义字符只认识\\和\' 这两种,其他都不转义。
- 如果需要对字符串中的指定字符进行操作,可以使用{ }这个语法。
- { } 这个语法是用来避免字符串中的变量解析时出现错误的
常量
- 常量前面不需要$
- 常量在定义的时候就需要赋初值,同时定义后就不能再修改值
- 常量通过define或const进行定义
- 常量的名称一般使用全部大写字母,中间可以用下划线分割
- 常量的值只能是标量,在PHP7中允许使用数组作为常量的值
- 可以使用constant(NAME)函数来获取常量的值
常量分为系统常量,自定义常量,魔术常量。
PHP_VERSION
PHP_OS
PHP_INT_MAX
PHP_INT_SIZE
定义常量的语法
define("NAME", VALUE); 使用define定义时需要注意常量名称要加引号
const NAME = VALUE;
获取常量
constant("NAME"); 使用constant函数时常量名称也要加引号
get_defined_constant() 获取系统常量和自定义常量的数组
判断常量是否存在使用 defined("NAME");
魔术常量
魔术常量一共有八个
__LINE__
__FILE__
__DIR__
__FUNCTION__
__CLASS__
__METHOD__
__TRAIT__
__NAMESPACE__
类型转换
类型转换分为自动转换和强制转换,而在强制转换中又分为临时转换和永久转换。
自动转换
自动转换是指在进行运算或条件判断时,系统自动将两种不同类型进行转换,从而完成运算或条件判断。
1. 转换成布尔型
0,0.0,"","0",NULL,[ ] 都会转换成FALSE,其他都会转换成TRUE
2. 转换成整型
TRUE转换成1,FALSE转换成0
浮点型转换成整型,是通过向下取整。
字符串转换成整型,是通过从头开始解析直到遇见不合法的数值。
3. 转换成浮点型
字符串转换成浮点型,也是通过从头开始解析直到遇见不合法的数值。
其他类型都是先转换成整型,再转换成浮点型。
4. 转换成字符串
布尔类型TURE转换成"1" FALSE转换成""
整型和浮点型都会转换成字面量形式的字符串
数组转换成"array" 对象转换成"object" 资源转换成"Resource id #id" (这三种没有实际意义)
NULL转换成""
强制转换
1. 临时转换
通过(type)$var语法 或者是 转换函数 进行转换,具体有
(int) intval() / (float)(double)(real) floatval() doubleval() / (string) strval() / (bool) (boolean) boolval()
(unset) / (array) / (object)
2. 永久转换
通过settype()方式进行强制永久类型转换,settype($var, $type)
$type是字符串,可以取值范围 "integer" "float" "string" "boolean" "array" "object" "null"
如何判断数据类型呢? 通过 is_*这个系列函数进行判断。
is_int() is_integer() is_long() / is_float() is_double() is_real() / is_bool() / is_string() / is_array() / is_object() / is_callable() / is_resource() / is_null()
is_nan() / is_numeric() / is_scalar()
预定义变量
$GLOBALS
$_REQUEST
$_POST
$_GET
$_SERVER
$_FILES
$_ENV
$_SESSION
$_COOKIE