php简介
PHP全称超文本预处理语言,是在服务器端执行的脚本语言,是一种简单的,面向对象的开源脚本语言PHP脚本可以让Web开发人员快速的书写动态生成的网页
PHP脚本以<?php开始,以?>结束
<?php
echo "hello world";
//这是php单行注释
/*这是
php
多行注释
*/
?>
放在在PHPstudy的WWW目录下,访问本地加PHP脚本名称执行代码
PHP 中的每个代码行都必须以分号结束。PHP 代码块的关闭标签会自带分号结束符的作用(因此在 PHP 代码块的最后一行可以不使用分号),分号是一种分隔符,用于把指令区分开来。
PHP变量
PHP变量以$符号开始,后面跟着变量名称
变量名必须以字母或者下划线开始
变量名只能包含字母、数字和下划线
变量名是区分大小写的($y和$Y是两个不同的变量)
PHP语句和变量都是区分大小写的
创建变量
PHP没有声明变量的命令,变量在第一次赋值给它的时候被创建
当给变量赋一个文本值时,记得在文本两侧加上引号
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
echo $x,$y;
?>
预定义变量
PHP提供了大量的预定义变量指提前系统定义的变量,可以直接拿来用(预定义变量都是以数组的形式存在的),这个定义与其他编程语言里的库函数类似
$_GET:获取所有表单以get方式提交的数据
$_POST:POST提交的数据都会保存在此
$_REQUEST:GET和 POST提交的都会保存。
$_GLOBALS:PHP中所有的全局变量
$_SERVER:服务器信息
$_SESSION: session 会话数据
$_COOKIE: cookie 会话数据
$_ENV:环境信息
$_FILES:用户上传的文件信息
可变变量
如果一个变量保存的值刚好是另一个变量的名字,那么可以直接通过访问一个变量得到另外一个变量的值,只需要在变量前面多加一个$符号
变量传值
将一个变量赋值给另外一个变量,称为变量传值
变量传值一共有两种方式:
值传递:
将变量保存的值复制一份,然后将值赋给另外一个变量保存(两个变量没有关系)
引用传递:
将变量保存的值所在的内存地址,传递给另外一个变量(两个变量指向同一块内存空间,是同一值)有点指针的味道
语法:
$新变量 = & $旧变量
常量
常量顾名思义是一种在程序运行过程中不可改变的量
常量的定义
在PHP中常量一般由两种定义方式:
define定义常量
语法:
define('常量名',常量值)
const定义常量
语法:
const 常量名 = 常量值
特点是常量名不需要加引号了
系统常量
跟变量一样,常量也有系统帮助用户定义好的常量,可以直接拿来用
常用的几个系统常量:
PHP_VERSION: PHP版本号
PHP_INT_SIZE: 整数所占用的字节大小
PHP_INT_MAX:表示整数能表示的最大值( PHP中整型是允许出现负数: 带符号)
当然这些只是举了一个小例子,在PHP中也还有其他的系统常量,如在VCcode输入关键字时,在弹出的对话框中可以看到其他的数据类型也拥有系统常量值
在对话框的右侧也会拥有相关的注解,虽然是英文但不影响观感
魔术常量
在PHP中还有一些特殊的常量,他们以双下划线开始 常量名 双下划线结束,这种常量称之为系统魔术常量,魔术常量的值通常会跟随这环境变化,但是用户改变不了
__LINE__:表示文件中的当前行号
__FILE__:
当前被执行脚本在所在电脑的绝对路径(带当前文件名)
__DIR__
当前被执行的脚本所在电脑的绝对路径
可以看到与FILE的区别就是不会带出当前脚本的文件名
下面这些暂时没有了解到实际意义,后续补充
__FUNCTION__:返回函数被定义时的名字
__CLASS__:返回当前所属类
__TRAIT__:
__METHOD__:当前所属方法
__NAMESPACE__:当前所属的命名空间
数据类型
在PHP中将数据分为三大类,八小类
基本数据类型:4个小类
String(字符串)
系统根据实际长度分配,一个字符串是一串字符的序列,用引号包裹
可以将字符串放在单引号或双引号中
PHP单引号与双引号的区别
在PHP中单引号串和双引号串的处理方式是不同的,双引号里面的数据会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,总被认为是普通字符直接输出。
可以看到在单引号中,变量和特殊字符都无法被识别【除\\、\'将会被转义输出】,是直接被当做普通字符输出在网页中,在vc中也提供了颜色的不同显示,方便用户查看数据之间的区别,仔细看可以看到被转义的数据颜色要淡一点,<br>我自己理解的是因为它是HTML标签所以会被网页执行
而双引号,颜色高亮就发生了变化,变量和转义字符都被解析到,除了\'以外(因为引号不同的原因,在双引号中如果需要输出单引号不需要转义可以直接输出,单引号中同理)
至于为什么后面的\n、\r、\t都显示空白,得出一个结论在php中,\n、\r、\t这些操作符是对源码进行操作,在浏览器中没有作用;而<br>这个标签只在浏览器中起换行作用,所以在源码中会显示这个标签,但是在源码中不换行
Integer/Int(整型)
系统分配4个字节存储,表示整数类型(有前提如:不能超过最大值才为整型)
进制数的定义
默认输出的就是十进制,当不做任何转换时,会自动将定义的其他进制数转换为10进制输出
八进制:0XXX
二进制:0bXXX
十六机制:0xXXX
当我们想要输出其他进制的结果时,可以使用运算或者是PHP内置函数进行转换
提供的内置函数都是以两种进制的代表缩写来完成组合达到转换目的,可以直接拿来使用
Float/Double(浮点型)
两种表示方法为同一概念互相没有区别,系统分配8个字节存储,表示小数,或者存储整型存不下的整数
浮点型主要有两种表示方式:小数,科学计数法
我们知道PHP系统常量PHP_INT_MAX表示的是int类型的最大值,当我们将最大值+1后,利用var_dump函数查看时可以看到变成了float,以此得出结论当整型超过自身存储大小后会用浮点型存储
Boolean(布尔型)
只有两个值TRUE和FALSE
复合数据类型:2个小类
Array(数组):一次性存放多个数据
Object(对象):存放对象
特殊数据类型:2个小类
NULL(空值):只有一个值就是NULL(不能运算)
Resource(资源类型):存放资源数据(PHP外部数据:如数据库、文件)
类型转换
在很多条件下需要将当前PHP取得的数据,转换成目标数据类型
在PHP中有两种类型转换方式:自动转换,强制转换
关于类型转换用的最多的就是转布尔值(判断)和转数值(运算)
其他类型转数值说明
布尔TRUE为1,FALSE为0
以字母开头的字符串转数值永远为0
以数字开头的字符串,取到碰到字符为止,且不会同时包含两个小数点
自动转换
系统根据需求自己判定转换
不知道为啥,字符串加字符串会报错,应该是版本或者是操作问题
但是如果是布尔值进行运算的话就会进行自动转换
强制转换
根据需要的目标类型转换,只需要在要转换的数据前添加一个要转换的类型并用括号括起来
强制类型转换就可以实现字符串与数值相加,跟规则一样:以字母开头的字符串转数值会被解析为0
以数字开头的字符串,取到碰到字符为止,且不会同时包含两个小数点
类型判断
is_类型名称(变量名)
例如:is_int() 、is_string()、is_float()这些函数用于检测变量是否为执行类型,并返回布尔值。
is_int函数返回的是布尔值,一般用作判断不能直接使用echo输出,需要使用var_dump函数进行输出
var_dump()
var_dump() 函数用于输出变量的相关信息
语法:
var_dump ( 变量名1,……,变量名n)
var_dump()函数会输出变量类型和值以及变量长度信息
gettype
函数用于获取变量的类型。得到的是该类型所对应的字符串
语法:
gettype ( 变量名)
settype
用于设定数据类型,设置成功时返回 TRUE, 失败时返回 FALSE。
语法:
settype ( 变名量,'转换的类型' )
与强制转换不同,强制转换是对输出复制的内容进行处理,不会处理实际存储的内容
settype会直接改变数据本身
单纯强制转换可以看到并不会更改原先的数据和类型
当使用settype函数后就是在原先数据的基础上直接进行类型转换