初识PHP
1.PHP简介
1.1PHP 是什么?
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的、脚本语言,是一种广泛运用于开源代码的尤其适合web开发并可以嵌入HTML的多用途的脚本语言
1.2PHP 文件是什么?
- PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
- PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
- PHP 文件的默认文件扩展名是 .php
1.3PHP能做什么
- PHP 可以生成动态页面内容
- PHP 可以创建、打开、读取、写入、关闭服务器上的文件
- PHP 可以收集表单数据
- PHP 可以发送和接收 cookies
- PHP 可以添加、删除、修改您的数据库中的数据
- PHP 可以限制用户访问您的网站上的一些页面
- PHP 可以加密数据
2.PHP语法
2.1PHP代码标记
-
ASP标记:<%php代码%>
-
短标记:<?php代码?>
-
脚本标记:<script language=“php”>php代码</script>
<script language="php"> echo 'hello word'; </script>
-
标准标记(常用):<?php php代码?>
2.2PHP注释
-
行注释:一次注释一行
//:后面跟的所有内容都是注释
#:与//一样
-
块注释:一次注释多行
/*:中间直到*/出现之前,全部都是是注释
2.3PHP语句分隔符
语句分隔符:在PHP中,代码是以行为单位,系统需要通过判断行的结束,该结束通常都是通过分号(英文)来表示
<?php
echo 'hello world';
?>
特殊说明:
1.PHP中标记结束符?>有自带语句结束符的效果,最后一行PHP代码可以没有语句结束符’:'(但是一般不建议使用)
2.PHP中很多代码的书写并不是嵌入在HTML中,而是单独存在,通常书写习惯中不建议使用标记结束符?>,以为这会使PHP自动认为开始到最后全部为PHP代码
2.4变量
2.4.1变量的基本概念
变量源于数学,是计算机语言中能存储计算结果或能表示值的抽象概念,变量可以通过变量名访问,在指令式语言中,变量通常是可变的
注:1.变量是用来存储数据的
2.变量是存在名字的
3.变量是通过名字来访问的
4.变量是可以改变的
2.4.2变量的使用
1.定义:在系统中增加对应的变量名字(内存)
<?php
$var1;//定义变量
$var2=1;//定义同时赋值
?>
2.赋值:可以将数据赋值给变量名(可以在定义的同时完成)
3.访问变量:可以通过变量名访问存储的数据
<?php
$var1=520;
echo $var1;
?>
4.删除变量
<?php
$var1=520;
$var2=250;
unset($var2)
echo $var1;
?>
2.4.3变量命名规则
- 在PHP中变量名字必须以’$'符号开始
- 名字由字母、数字和下划线’-'构成,但不能以数字开头
- 在PHP中本身还允许中文变量(不建议)
2.4.4预定义变量
- 预定义变量:提前定义的变量,系统定义的变量,存储许多需要用到的数据(预定义变量都是数组)
- $_GET:获取所有表单以get方式提交的数据
- $_POST:post提交的数据都会保存在此
- $_REQUEST:get和post提交的都会保存
- $GLOBALS:php中所有的全局变量
- $_SERVER:服务器信息
- $_SESSION:session会话数据
- $_COOKIE:cookie会话数据
- $_ENV:环境信息
- $_FILES:用户上传的文件信息
2.4.5可变变量
可变变量: 如果一个变量保存的值刚好是另外一个变量的名字,那么可以直接通过访问一个变量得到另外一个变量的值,使用时在变量前面再多加一个$符号
<?php
$a=b;
$b=bb;
echo $a;
echo $$a;
?>
2.4.6变量传值
-
变量传值:将一个变量赋值给另外一个变量
-
变量传值一共有两种方式:值传递、引用传递
值传递:将变量保存的值复制一份,然后将新的值给另外的一个变量保存(两个变量没有关系)
引用传递:将变量保存的值所在的内存地址传递给另外一个变量(两个变量指向同一块内存空间且是同一个值)
-
在内存中通常有以下几个分区
栈区:程序可以操作的内存部分(不存数据,只运行程序代码)(空间小、速度快)
代码段:存储程序的内存部分(不执行)
数据段:存储普通数据(全局区和静态区)
堆区:存储复杂数据(空间大、速度慢)
<?php
//值传递
$a=10;
$b=$a;
$b=5;
echo $a,$b;
//引用传递
$c=10
$d=$c
$c=5
echo $c,$d;
?>
2.5常量
2.5.1常量基本概念
- 常量是一种在程序运行当中不可更改的量(数据)
- 常量一旦定义,通常数据不可改变(用户级别)
2.5.2常量定义形式
PHP中常量有两种定义方式:
- 使用定义常量的函数:define(‘常量名’,常量值);
- const=常量值
常量名字的命名规则:
-
常量不需要使用’$'符号,一旦使用系统就会认为是变量
-
变量的名字由字母、数字、下划线组成,但是不能以数字开头
-
常量的名字通常是以大写字母为主(与变量加以区别)
-
常量命名的规则比变量更加松散,可以使用一些特殊字符(该方式只适用于define定义)
注意:
-
difine和const定义的常量是区别在于访问权限的不同
-
定义常量通常不区分大小写,但是可以通过define函数的第三个参数来实现区分
define(string $name,mixed $value [,bool $case_insensitive=false])
2.5.3常量使用形式
常量的使用与变量基本一样,但不可改变值(在定义的时候必须赋值)
<?php
define('pi',3.14);
echo pi;
?>
有时候针对特殊名字的常量需要用到另一个访问常量的函数:constant(“常量名”)
<?php
define('-_-',666);
echo constant('-_-');
?>
常量和变量的使用说明:
- 凡是数据可能会变化的,肯定使用变量
- 数据不一定会变的,可以使用常量或是变量,但一般是变量居多
- 数据不允许被修改的,一定使用常量
2.5.4系统常量
系统帮助用户定义的常量,用户可以直接使用
- PHP_VERSION:PHP版本号
- PHP_INT_SIZE:整型大小
- PHP_INT_MAX:整型能表示的最大值(PHP中整型是允许出现负数的)
<?php
echo PHP_VERSION;
echo PHP_INT_SIZE;
echo PHP_INT_MAX;
?>
在PHP中还有一些特殊的常量,他们由双下划线开始+常量名+双下划线结束,这种常量称为系统魔术常量,魔术常量的值通常会跟着环境变化,但是用户改变不了,常见的魔术常量有:
- _DIR_:当前被执行的脚本所在电脑的绝对路径
- _FILE_:当前被执行的脚本所在电脑的绝对路径(带自己文件的名字)
- _LINE_:当前所属的行数
- _NAMESPACE_:当前所属的命名空间
- _CLASS_:当前所属的类
- _METHOD_:当前所属的方法
<?php
echo __DIR__;
echo __FILE__;
?>
2.6数据
2.6.1数据类型
data type,在PHP中指的是存储的数据本身的类型,而不是变量的类型。PHP是一种弱类型语言,变量本身没有数据类型
2.6.2PHP的八种数据类型
在PHP中将数据分为三大类八小类:
-
简单(基本)数据类型:
-
整型:int/integer,系统分配4个字节存储,表示整数类型(前提能存得下)
-
浮点型:float/double,系统分配8个字节存储,表示小数或整型存不下的整数
-
字符串型:string,系统根据实际长度分配,表示字符串
-
布尔类型:bool/boolean,表示布尔类型,只有两个值:true和fales
bool类型不能使用echo来查看,应使用var_dump结构查看,即var_dump(变量)
-
-
复合数据类型:
- 对象类型:object,存放对象
- 数组类型:array,一次性存放多个数据
-
特殊数据类型:
- 资源类型:recource,存放资源数据(PHP外部数据,如数据库、文件等)
- 空类型:null,只有一个值null,不能参与运算
2.6.3数据类型转换
在很多的条件下,需要指定的数据类型,需要外部数据(或当前PHP取得的数据)转换成目标数据类型
在PHP中有两种转换方式:
-
自动转换:系统根据需求自动判定,自动转换(使用较多,效率偏低)
-
强制(手动)转换:人为根据需要的数据类型进行转换
强制转换规则:在变量之前增加一个括号(),然后在里面写上对应类型,但是如果要转换为NULL类型,需要借助unset函数
还有一组函数可以用来获取以及设定数据(变量)的类型:
gettype(变量名):获取类型,得到的是该类型对应的字符串
settype(变量名,类型):设定数据类型
注意:
- 强制转换是对数据的一个复制值进行处理,不会改变实际存储的内容
- settype会直接改变数据本身
在转换过程中,使用较多的为转布尔类型(判断)和转数值类型(算数运算)
数据类型转换说明:
- 其他类型转布尔类型大多数都为true,只有极少数为false
- 布尔类型true=1,false=0
- 以字母开头的字符串转数值永远为0
- 以数字开头的字符串,取碰到字符串为止(不会包含两个小数点)
2.6.4数据类型判断
通过一组判断类型函数,来判断变量,最终返回这个变量所保存数据的数据类型(验证成功为true,失败为false),函数格式为:is_数据类型(变量名)
<?php
$a=112233;
echo var_dump(is_int($a));
?>
2.6.5基本数据类型
-
整数类型
-
保存整数数值,最大为4个字节的存储容量,最大为32位
-
在PHP中提供了四种整型的定义方式:十进制定义、二进制定义、八进制定义和十六进制定义
$a=120 十进制定义
$a=0b110 二进制定义
$a=0120 八进制定义
$a=0x120 十六进制定义
-
-
浮点类型
-
小数类型以及超过整型所能存储范围的整数(不保证精度),精度范围大概15个有效数字左右
-
浮点型定义有两种方式:
$f=1.23
$=1.23e10//科学记数法
浮点数能存储的数更大的原因:
整型最大值为:11111111 11111111 11111111 11111111
其中每一位都是有效数字,而浮点数中有可能有几位表示的为10的指数倍
注:尽量不要使用浮点数做精确判断,因为浮点数保存的数据不够精确,而且在计算机中凡是小数基本上存的都不准确
-
-
布尔类型
只有两个值true和false,通常用于比较和判断,但在进行判断时要特别注意类型转换
还有两个常用的比较函数:
empty():判断数据的值是否为“空”,不是NULL,如果为空返回true,不为空返回false
lsset():判断数据存储的变量本身是否存在,存在返回true,不存在返回false
2.5运算符
运算符,operator,是一种将数据进行运算的特殊符号,在PHP中一共有十种运算符之多
2.5.1赋值运算符
-
赋值运算(右运算):符号是"=",表示将右边的结果(包括变量、数据、常量和其他匀速出来的结果),保存到内存的某个位置。然后将位置的内存地址赋值给左侧的变量或常量
-
算数运算:基本的算数操作
+:执行数据累加
-: 执行数据相减
*:执行数据相乘
/:执行数据相除
%:执行数据取余(一定是两个整数的运算 )