您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > php

php基础知识笔记

时间:2020-02-29 11:34:10  来源:  作者:

php基础知识笔记

 

主要参考:

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及以上的内置服务器不应该用于生产环境,但对于本地开发来说是个极好的工具。它不需要ApacheNginx代理就能预览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、算数运算符

php基础知识笔记

 

B、赋值运算符

php基础知识笔记

 

C、字符串运算符

php基础知识笔记

 

D、递增/递减运算符

php基础知识笔记

 

E、比较运算符

php基础知识笔记

 

F、逻辑运算符

php基础知识笔记

 

G、数组运算符

php基础知识笔记

 

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

php基础知识笔记

 



Tags:php   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
网络地址来源:获取公网IP地址 https://ipip.yy.com/get_ip_info.phphttp://pv.sohu.com/cityjson?ie=utf-8http://www.ip168.com/json.do?view=myipaddress...【详细内容】
2021-12-15  Tags: php  点击:(15)  评论:(0)  加入收藏
一、编程语言1.根据熟悉的语言,谈谈两种语言的区别?主要浅谈下C/C++和PHP语言的区别:1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互...【详细内容】
2021-12-15  Tags: php  点击:(17)  评论:(0)  加入收藏
序言:前段时间织梦因为版权的问题在网上闹得沸沸扬扬,也提醒了众多开发者选择cms上应该谨慎使用,今天给大家展示一款自己搭建的内容管理系统,不用担心版权的问题,而且非常容易维...【详细内容】
2021-11-30  Tags: php  点击:(34)  评论:(0)  加入收藏
序言:习惯了用集成软件来安装php的运行环境,单独配置php、apache成为了部分程序员不愿意面对的问题,下面和我一块来复习一下,赶紧点赞收藏吧。 php官方下载地址https://windows....【详细内容】
2021-11-23  Tags: php  点击:(24)  评论:(0)  加入收藏
准备安装包(PHP: Hypertext Preprocessor)下载安装包以及组件wget https://www.php.net/distributions/php-8.0.0.tar.bz2wget https://github.com/phpredis/phpredis/archive...【详细内容】
2021-11-09  Tags: php  点击:(40)  评论:(0)  加入收藏
golang context 很好用,就使用php实现了github地址 : https://github.com/qq1060656096/php-go-context context使用闭坑指南1. 将一个Context参数作为第一个参数传递给传入和...【详细内容】
2021-11-05  Tags: php  点击:(41)  评论:(0)  加入收藏
TechEmpower BenchmarkTechEmpower 的测试比较科学,包含 SQL 查询、JSON 序列化等各种测试,同时标注了哪些是使用了 ORM,哪些是 RAW 查询。 TechEmpower Benchmark Web Framew...【详细内容】
2021-10-12  Tags: php  点击:(71)  评论:(0)  加入收藏
一、背景介绍Pikachu是一个带有各种漏洞的Web应用系统,这个系统是使用PHP搭建的,需要PHP环境和Mysql数据库支持。我们可以利用phpstudy在本地搭建这个渗透测试平台,如果你是一...【详细内容】
2021-10-09  Tags: php  点击:(53)  评论:(0)  加入收藏
一段数组为例:$list = array:4 [ 0 => array:7 [ "id" => 56 "mer_id" => 7 "order_id" => "wx163265961408769974" "is_postage" => 0 "store_name" => "奇...【详细内容】
2021-09-29  Tags: php  点击:(65)  评论:(0)  加入收藏
利用JS的CryptoJS 3.x和PHP的openssl_encrypt,openssl_decrypt实现AES对称加密解密,由于需要两种语言对同一字符串的操作,而CryptoJS 的默认加密方式为“aes-256-cbc”,PHP端也...【详细内容】
2021-09-16  Tags: php  点击:(79)  评论:(0)  加入收藏
▌简易百科推荐
序言:前段时间织梦因为版权的问题在网上闹得沸沸扬扬,也提醒了众多开发者选择cms上应该谨慎使用,今天给大家展示一款自己搭建的内容管理系统,不用担心版权的问题,而且非常容易维...【详细内容】
2021-11-30  小程序软件开发    Tags:管理系统   点击:(34)  评论:(0)  加入收藏
准备安装包(PHP: Hypertext Preprocessor)下载安装包以及组件wget https://www.php.net/distributions/php-8.0.0.tar.bz2wget https://github.com/phpredis/phpredis/archive...【详细内容】
2021-11-09  mimic96    Tags:PHP   点击:(40)  评论:(0)  加入收藏
golang context 很好用,就使用php实现了github地址 : https://github.com/qq1060656096/php-go-context context使用闭坑指南1. 将一个Context参数作为第一个参数传递给传入和...【详细内容】
2021-11-05  1060656096    Tags:PHP   点击:(41)  评论:(0)  加入收藏
一段数组为例:$list = array:4 [ 0 => array:7 [ "id" => 56 "mer_id" => 7 "order_id" => "wx163265961408769974" "is_postage" => 0 "store_name" => "奇...【详细内容】
2021-09-29  七七小影视    Tags:PHP   点击:(65)  评论:(0)  加入收藏
利用JS的CryptoJS 3.x和PHP的openssl_encrypt,openssl_decrypt实现AES对称加密解密,由于需要两种语言对同一字符串的操作,而CryptoJS 的默认加密方式为“aes-256-cbc”,PHP端也...【详细内容】
2021-09-16  李老师tome    Tags:对称加密   点击:(79)  评论:(0)  加入收藏
1、checkdate()验证格利高里日期即:日期是否存在。checkdate(month,day,year);month必需。一个从 1 到 12 的数字,规定月。day必需。一个从 1 到 31 的数字,规定日。year必需。...【详细内容】
2021-08-31  七七小影视    Tags:时间函数   点击:(80)  评论:(0)  加入收藏
对于各类开发语言来说,整数都有一个最大的位数,如果超过位数就无法显示或者操作了。其实,这也是一种精度越界之后产生的精度丢失问题。在我们的 PHP 代码中,最大的整数非常大,我...【详细内容】
2021-08-26  硬核项目经理    Tags:PHP   点击:(83)  评论:(0)  加入收藏
遵从所有教材以及各类数据结构相关的书书籍,我们先从线性表开始入门。今天这篇文章更偏概念,是关于有线性表的一个知识点的汇总。上文说过,物理结构是用于确定数据以何种方式存...【详细内容】
2021-07-19  硬核项目经理    Tags:线性表   点击:(94)  评论:(0)  加入收藏
一、开启IIS全部功能。二、部署PHP1.官网下载并解压PHP: https://windows.php.net/downloads/releases/2.将php.ini-development文件改为php.ini3.修改php.ini(1)去掉注释,并修...【详细内容】
2021-07-15  炘蓝火诗  今日头条  Tags:PHP环境   点击:(129)  评论:(0)  加入收藏
一、环境说明本文中使用本地VM虚机部署测试。OS:CentOS Linux release 7.8.2003 (Core)虚机配置:2核CPU、4G内存①系统为CentOS 7.8 x64最小化安装,部署前已完成系统初始化、...【详细内容】
2021-06-25  IT运维笔记  今日头条  Tags:PHP8.0.7   点击:(141)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条