简介
PHP,Hypertext Preprocessor,又称为超文本预处理器,开发PHP会需要一定的开发环境,我们现在经常用的是wamp(Windows + Apache + MySql + PHP),其他诸如Lamp(Linux + Apache + MySql + PHP)、PHPStudy、APPServer等,也是经常用的。
PHP 文件的默认文件扩展名是 ".php"。
语法
<?php
这个是php文件或段落开始的标志,象征着一个php脚本从这里开始;
?>
这个是php脚本的结束,在某些情况下是可以省略掉的。
PHP 语句以分号结尾(;)。PHP 代码块的关闭标签也会自动表明分号(因此在 PHP 代码块的最后一行不必使用分号)。
php中的变量
- 变量的命名:只能由字母数字下划线组成,开头不能为数字。
- PHP中变量区分大小写!
- PHP内置函数或者类名不区分大小写!
- php中的变量声明与使用,必须以
$
开头 - PHP是一种弱类型预言,变量其实并不需要声明,可以直接给变量赋任何类型的值。
- PHP中可以使用连等同时声明多个变量。而不能使用
,
分隔,例如:$num1=$num2=$num3=$num4=5;
php中的常量
- 定义常量
bool define(String 常量名,mixed 常量值[,bool 是否区分大小写]);
- 常量的注意事项
- 常量定义只能使用define函数
- 常量名原则上要求必须使用大写声明。而且必须不能带$符号
- 常量声明以后,默认全局范围有效,没有作用域之说
- 常量不但不能改,而且不能删,unset()、setType()等函数均无效
- 常量默认区分大小写,但是可以在声明常量时,将define第三个参数设为true即可改为不区分大小写,但是原则上不改
- 常量必须使用define()定义后才能使用,如果使用未声明的常量,则会将常量名转为常量字符串,但是会报警告
- 常量的值只能是标量
- 可以使用constant读取常量的值,注意用""包裹常量名
可以使用get_defined_constants();获取所有已定义常量,包括系统自定义的n多个常量
php的内置函数
-
unset()
删除并释放变量; -
isset()
检测变量是否设置; -
empty()
检测变量是否为空(未设置或值为null都为空);
PHP中的判断变量类型的测试函数 -
is_bool()
:判断是否是布尔型 -
is_int()
、is_integer()
和is_long()
:判断是否为整型。 -
is_float()
、is_double()
和is_real()
:判断是否为浮点型 -
is_string()
:判断是否为字符串 -
is_array()
:判断是否为数组 -
is_object()
:判断是否为对象 -
is_resource()
:判断是否为资源类型 -
is_null()
:判断是否为null -
is_scalar()
:判断是否为标量 -
is_numeric()
:判断是否是任何类型的数字和数字字符串 -
is_callable()
:判断是否是有效的函数名
php脚本中的注释
//
单行注释
#
脚本中的注释
/*
*多行注释
*/
php中的数据类型
php中一共有8种数据类型,共分为3类
- 标量类型:
布尔型Boolean
、整形Integer
、浮点型Float/Double
、字符串String
- 复合类型:
数组Array
、对象Object
- 特殊类型:
资源Resource
、空null
php还有一种伪类型,伪类型并不是一种真实存在的数据类型。为了确保代码的易读性,常用于撰写帮助文档时使用。 -
mixed
:代表参数可以是多种不同数据类型; -
number
:代表参数可以使Integer或者Float; -
callback
:代表参数可以是一个回调函数。
php中的字符串
php中声明字符串有3种方式
-
''
单引号 -
""
双引号 - 定界符
<<<s//定界符声明字符串,通过<<<(定界标识符)开始
//定界标识符可以是任意字母,只需要保证开始和结束一致即可
这里是定界符定义的字符串的内容
s; //注意末尾的结束符必须靠边,其前面不能有空格
三种声明字符串方式的区别
- 定界符功能默认与双引号相同。
- 单引号中不能解析变量;双引号可以解析变量!!双引号解析变量时,需注意变量名后需用空格与其他字符分隔,或者用{}包裹起来 ,例如:"字符串${num}字符串" "字符串{$num}字符串"均可。
- 单引号可以包裹双引号,双引号可以包裹单引号,不能包裹相同类型的引号,这点与js相同
- 单引号中不能使用转义字符(除了单引号''本身,转义符\本身);双引号中可以使用转义字符。
php中的数据类型转换
- 数据类型自动转换:在运算的时候,Boolean、null、String等类型,会先自动转为int和Float类型,其中null --> 0、true --> 1 、false --> 0、string --> 第一个非数值字符前的数字, "123a" --> 123,没有则转为0
- 数据类型强制转换,根据自己的需求,强制将变量转为其他类型的变量,例如:$新变量 = (新类型)$原变量 >>> $str = (String)1;
新类型可以使用全拼,也可以使用缩写
可以强制转换的类型如下:
(int),(integer) - 转换成整型
(bool),(boolean) - 转换成布尔型
(float),(double),(real) - 转换成浮点型
(string) - 转换成字符串
(array) - 转换成数组
(object) - 转换成对象 - 使用
setType()
函数强转
bool setType(mixed var,String type);
第一个参数表示任何类型的变量,另一个参数表示字符串类型的数据类型
上面两种强制数据类型转换的区别:第一种是将转换之后的结果赋给新变量;第二种直接修改了原变量的数据类型。
php中数据类型转换成布尔值后是false的情况
- Boolean:false
- Integer:0
- Float:0.0
- String: "" "0"
("0.0" "000" 都是true!只有一个0是false!)
- 空数组
- 空Object仅在PHP4是false,其他版本对象都是true
- null和尚未定义的变量都是false
- 所有资源都是true!(除PHP4,所有对象也是true )
php中的两种输出方法
-
echo
能够输出一个以上的字符串,echo 是一个语言结构,有无括号均可使用:echo 或 echo()。 -
print
只能输出一个字符串,并始终返回 1,print 是一个语言结构,有无括号均可使用:print 或 print()。
echo 比 print 稍快,因为它不返回任何值。
php中的作用域
php中作用域分为3种global
、local
、static
- global 是全局作用域,函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问(跟js不同)。
- local 函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。所以我们可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被在其中创建它的函数识别。
global关键词
global 关键词用于在函数内补使用全局变量。在要使用的global变量前面使用 global 关键词。
<?php
$x=5;
$y=10;
function myTest() {
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
static关键词
通常,当函数完成/执行后,会删除所有变量。如果我们不想删除某个变量,在首次声明变量时使用 static 关键词;
<?php
function myTest() {
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>