主要参考:
https://www.runoob.com/php/php-intro.html 菜鸟教程
https://www.w3school.com.cn/ W3school
1、php定义
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
注意:php不是拍黄片,不是编程语言,它是一门弱类型的脚本语言。
2、php能做什么?
A、PHP 可以生成动态页面内容
B、PHP 可以创建、打开、读取、写入、关闭服务器上的文件
C、PHP 可以收集表单数据
D、PHP 可以发送和接收 cookies
E、PHP 可以添加、删除、修改您的数据库中的数据
F、PHP 可以限制用户访问您的网站上的一些页面
G、PHP 可以加密数据
3、安装 - 集成环境与编辑器
推荐phpstudy + phpstorm
Phpstudy:https://jingyan.baidu.com/article/335530dafae53519ca41c37a.html 百度经验
Phpstorm:https://www.jetbrains.com/ 官网下载
编辑器也有大神喜欢用sublime Text 或者 notepad 甚至记事本的。。。
Sublime Text :https://www.sublimetext.com/ sublime 官网
Notepad:https://notepad-plus-plus.org/ notepad 官网
其它的集成环境,例如phpenv。
phpenv:https://www.phpenv.cn/
php内置Web服务器:
参考文档:https://blog.csdn.net/ltx06/article/details/78933441
命令:php -S localhost:8000
在laravel框架中的内置服务器:php artisan serve
注意:php5.4及以上的内置服务器不应该用于生产环境,但对于本地开发来说是个极好的工具。它不需要Apache或Nginx代理就能预览php应用。
4、语法与变量
PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。
PHP 脚本可以放在文档中的任何位置。
PHP 脚本以 <?php 开始,以 ?> 结束。
PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print。
注意:echo - 可以输出一个或多个字符串
print - 只允许输出一个字符串,返回值总为 1
EOF - PHP 定界符 EOF 的作用就是按照原样,包括换行格式什么的,输出在其内部的东西。且可以识别变量。
变量是用于存储信息的"容器"。
变量规则:
A、变量以 $ 符号开始,后面跟着变量的名称
B、变量名必须以字母或者下划线字符开始
C、变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
D、变量名不能包含空格
E、变量名是区分大小写的($y 和 $Y 是两个不同的变量)
PHP是一门弱类型语言,因此不必声明变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
PHP变量的作用域:local (局部);global (全局);static (静态);parameter (参数)
超级全局变量:PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用。它也是全局变量的一种。
超级全局变量主要有:
$GLOBALS
$_SERVER
保存关于报头、路径和脚本位置的信息
$_REQUEST
用于收集 HTML 表单提交的数据。可以理解$_POST和$_GET 是它的子集。
$_POST
被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
注意:默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。
$_GET
被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。所有的变量名和值都会显示在 URL 中。
注意:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。
$_FILES
$_ENV
$_COOKIE
$_SESSION
5、数据类型
基本类型:
String(字符串)
Integer(整型)
有二进制、八进制、十进制、十六进制等几种方法来表示整数,前面可以正号(+)负号(-)
Float(浮点型),也称作double
Float、Double、Real都是浮点型
Boolean(布尔型)
布尔类型只有两个值,常量 TRUE 或 FALSE。两个都不区分大小写。
Array(数组)
PHP里的数组,相当于其它语言里的数组、列表、字典、集合、栈、队列。
数组有一维数组,二维数组,多维数组。
Object(对象)
有实例化的类都是对象。is_object可以判断一个变量是否是Object 对象,也可以用 (object)来强制转成对象。
NULL(空值)
Callable / Callback(可调用)(回调类型)
Resource(资源类型)
资源 resource 是一种特殊变量,保存了到外部资源的一个引用,比如打开文件、连接数据库、请求网络等。
伪类型:
mixed(混合类型)
mixed 说明一个参数可以接受多种不同的(但不一定是所有的)类型。
number(数字类型)
number 说明一个参数可以是 integer 或者 float
callback(回调类型,又称为 callable)
array|object(数组 | 对象类型)
void (无类型)
PHP 7的新特性: 标量类型与返回值类型声明
PHP类型的比较:
松散比较:使用两个等号 == 比较,只比较值,不比较类型。
严格比较:用三个等号 === 比较,除了比较值,也比较类型。
6、常量
常量是单个值的标识符(名称)。在脚本中无法改变该值。
有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。
注释:与变量不同,常量贯穿整个脚本是自动全局的。
设置常量使用函数 define(), 首个参数定义常量的名称,第二个参数定义常量的值,可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。
魔术常量:
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变:
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
__FUNCTION__自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)
__CLASS__ 自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)
__TRAIT__
__METHOD__ 返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(区分大小写)
Php 7新特性:常量数组 define() 可以代替const 直接定义常量数组。
例如:define(‘sites’,[‘web’ , ’name’ , ‘php’]);
7、运算符
A、算数运算符
B、赋值运算符
C、字符串运算符
D、递增/递减运算符
E、比较运算符
F、逻辑运算符
G、数组运算符
Php 7 新特性:NULL合并运算符
PHP 7 新增加的 NULL 合并运算符(??)是用于执行isset()检测的三元运算的快捷方式。
NULL 合并运算符会判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。
例如:$site = isset($_GET['site']) ? $_GET['site'] : 'PHP开发';
上述代码就可以改写为:$site = $_GET['site'] ?? 'PHP开发';
8、条件语句
if 语句 - 在条件成立时执行代码
if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
switch 语句 - 在若干条件之一成立时执行一个代码块
9、循环语句
while - 只要指定条件为真,则循环代码块
do...while - 先执行一次代码块,然后只要指定条件为真则重复循环
for - 循环代码块指定次数
foreach - 遍历数组中的每个元素并循环代码块
10、函数及常用函数
参考:https://blog.csdn.net/alashan007/article/details/78216498
数学函数
l abs 求绝对值
l ceil 进一法取整
l floor 舍去法取整
l fmod 浮点数取余
l pow($a, $n) 返回$a的$n次方
l round 浮点数四舍五入
l sqrt 求平方根
l max 求最大值
l min 求最小值
l Rand($min,$max) 随机数
l Mt_rand($min,$max) 更好的随机数
l Pi 获取圆周率的值
字符串操作
l Trim 删除字符串两端的空格或其他预定义字符
l Str_pad($str,$len,$v) 把字符串$str用$v 填充到指定长度$len
l Str_repeat($str,$len) 重复$len次使用指定字符串$str
l Str_split($str) 把字符串分割到数组中
l Strrev() 字符串反转
l Str_shuffle 随机地打乱字符串中的所有字符
l Strtolower 字符串转为小写
l Strtoupper 字符串转为大写
l Ucfirst 字符串首字母大写
l Ucwords 字符串每个单子首字符转为大写
l Chunk_split 将字符串分成小块
l Strtok($str,$token) 切开字符串$str
l Explode()
调用: array explode(str $sep,str $str[,int $limit])
输入: $sep为分割符,$str目标字符串,$limit返回数组最多包含元素数 输出: 字符串被分割后形成的数组
l Implode()
调用: string implode ( string $glue , array $pieces )
$glue默认, 用''则直接相连
l Substr($str, $start, $len) 截取字符串
l Str_replace() 字符串替换操作,区分大小写
调用mix str_replace(mix $search,mix $replace, mix $subject[,int &$num])
输入: $search查找的字符串,$replace替换的字符串,$subject被查找字串, &$num 输出: 返回替换后的结果
l Str_ireplace() 字符串替换操作,不区分大小写
l Substr_count() 统计一个字符串,在另一个字符串中出现次数
l Substr_replace() 替换字符串中某串为另一个字符串
调用: mixed substr_replace ( mixed $string, string $replacement,int $start [, int $length ] )
l Similar_text($str1, $str2) 返回两字符串相同字符的数量
l Strrchr() 返回一个字符串在另一个字符串中最后一次出现位置开始到末尾的字符串
l Strstr() 返回一个字符串在另一个字符串中开始位置到结束的字符串
l Strtr() 转换字符串中的某些字符
l Strpos() 寻找字符串中某字符最先出现的位置
l Strrpos() 寻找某字符串中某字符最后出现的位置
l Str_word_count() 统计字符串含有的单词数
l Strlen($str) 统计字符串长度
l Md5() 字符串md5编码
l Strcasecmp() 不区分大小写比较两字符串
l Strcmp() 区分大小写比较两字符串
html标签关联
l Htmlentities() 把字符串转为html实体
l Htmlspecialchars() 预定义字符转html编码
l nl2br() n转义为<br>标签
l Strip_tags() 剥去HTML、XML以及PHP的标签
l Addcslashes() 在指定的字符前添加反斜线转义字符串中字符 -- addslashes
l Stripcslashes() 删除由addcslashes() 添加的反斜线 -- stripslashes
l Chr() 从指定的 ASCII 值返回字符
l Ord() 返回字符串第一个字符的ASCII值
时间函数
l time(): 返回当前的 Unix 时间戳
调用: int time ( void ) 输出: 返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数
l Mktime() 取得一个日期的 Unix 时间戳
l checkdate(): 验证一个格里高里日期
l date_default_timezone_set(): 设定用于一个脚本中所有日期时间函数的默认时区
l getdate(): 取得日期/时间信息
l strtotime(): 将任何英文文本的日期时间描述解析为 Unix 时间戳
l microtime(): 返回当前 Unix 时间戳和微秒数
其它常用函数
l intval(): 获取变量的整数值
11、数组、常用数组函数及数组排序
l Array() 生成一个数组
l Array_combine($a,$a2) 生成一个数组,用一个数组$a的值 作为键名,另一个数组$a2值作为值
l Range() 创建并返回一个包含指定范围的元素的数组
l Compact() 创建一个由参数所带变量组成的数组
l Array_fill($start_index, $len, $value) 用给定的填充(值生成)数组
l Array_chunk($arr, $num) 把一个数组分割为新的数组块
l Array_merge() 把两个或多个数组合并为一个数组
l Array_slice($arr, $offset, $len) 在数组中根据条件取出一段值并返回。
l Array_diff() 返回两个数组的差集数组
l Array_intersect() 返回两个或多个数组的交集数组
l Array_search($v, $arr) 数组中查找一个值,返回一个键,没有返回返回假
l Array_splice($a1, $offset, $len, $a2) 把数组中一部分删除用其他值替代
l Array_sum() 返回数组中所有值的总和
l In_array($v, $arr) 在数组中搜索给定的值,区分大小写
l Array_key_exists() 判断某个数组中是否存在指定的 key
l key(): 返回数组内部指针当前指向元素的键名
l current(): 返回数组中的当前元素(单元).
l next(): 把指向当前元素的指针移动到下一个元素的位置,并返回当前元素的值
l prev(): 把指向当前元素的指针移动到上一个元素的位置,并返回当前元素的值
l end(): 将数组内部指针指向最后一个元素,并返回该元素的值(如果成功)
l reset(): 把数组的内部指针指向第一个元素,并返回这个元素的值
l list(): 用数组中的元素为一组变量赋值
l array_shift(): 删除数组中的第一个元素,并返回被删除元素的值
l array_unshift(): 在数组开头插入一个或多个元素
l array_push(): 向数组最后压入一个或多个元素
l array_pop(): 取得(删除)数组中的最后一个元素
l shuffle(): 将数组打乱,保留键名
l count(): 计算数组中的单元数目或对象中的属性个数
l array_flip(): 返回一个键值反转后的数组
l array_keys(): 返回数组所有的键,组成一个数组
l array_values(): 返回数组中所有值,组成一个数组
l array_reverse(): 返回一个元素顺序相反的数组 元素顺序相反的一个数组,键名和键值依然匹配
l array_count_values(): 统计数组中所有的值出现的次数
l array_rand(): 从数组中随机抽取一个或多个元素,注意是键名!!!
l array_unique(): 删除重复值,返回剩余数组
l sort(): 按升序对给定数组的值排序,不保留键名
l rsort(): 对数组逆向排序,不保留键名
l asort(): 对数组排序,保持索引关系
l arsort(): 对数组逆向排序,保持索引关
l ksort(): 系按键名对数组排序
l krsort(): 将数组按照键逆向排序
l natsort(): 用自然顺序算法对数组中的元素排序
l natcasesort(): 自然排序,不区分大小写
l array_column() 返回输入数组中某个单一列的值。
12、命名空间
参考:https://www.runoob.com/php/php-namespace.html
13、面向对象
参考:https://www.runoob.com/php/php-oop.html