php基础

2021-04-08 08:25

阅读:360

标签:val   script   ber   变量   逻辑   tar   ext   定位   计算   

1.什么是PHP
PHP(hypertext preprocessor),超文本预处理器

2.PHP能做什么
a.命令行脚本
b.服务器脚本(最主要功能)
c.桌面应用程序

3.PHP的工作原理
a.客户端向服务器发送HTTP请求
b.服务器接收请求后,将请求转发给PHP引擎
c.PHP引擎接受并处理请求
d.PHP引擎将处理结果返回给服务器
e.服务器再将结果返回给客户端

4.Apache的安装与配置
Apache是可以跨平台运行的、最受欢迎的服务器软件
A.下载Apache(https://www.apachelounge.com/download/)
B.解压压缩包到 c:\apache24目录
C.在windows命令行中切换到Apache安装目录下的bin目录内
切换到命令行:win + R cmd
命令行是:cd c:\apache24\bin
提示:cd(change directory),改变目录
D.输入 httpd -k install
E.启动Apache; 鼠标右键此电脑--管理--服务与应用程序--双击服务
F.启动浏览器,并输入http://127.0.0.1

卸载Apache
在命令行输入 sc delete apache 服务器名称

5.下载PHP
A.下载(https://windows.php.net/download#php-7.1)
B.选择相应版本的PHP进行下载
提示:Apache服务器应选择线程安全(TS)的PHP版本进行下载
C.解压压缩包到相应的位置
D.复制PHP安装目录下的php.ini-production,并重命名为php.ini
php.ini-delopment(应用于开发环境)
php.ini-production(应用于生产环境)
这两个PHP配置文件的示例文件


6.将PHP绑定到Apache
a.编辑Apache配置文件 -- httpd.conf(位于Apache安装目录下的conf目录内)
b.在文件空白处添加:
#加载模块
LoadModule php7_module "c:\php72\php7apache2_4.dll文件的位置"
#PHP配置文件的位置
PHPIniDir "PHP配置文件的目录"
#告诉PHP引擎,哪些类型的文件将交给PHP引擎来处理
AddType application/x-httpd-php .php

7.Apache的基本配置
7.1)主目录
将DocumentRoot和Directory修改为期望目录;
7.2)默认首页
修改DirectoryIndex选项,多个文件名之间以空格分隔;

二、PHP语法结构
1.1 XML风格
...
?>
说明:如果PHP代码后不存在其他(HTML\CSS)代码,结尾 ?>必须省略
1.2 短风格

?>
说明:
A.默认情况下,PHP引擎中的短风格被禁用;
B.启用时将PHP配置文件中的short_open_tag设置为on

2.注释
2.1)单行注释
C++风格://
Shell风格:#
2.2)多行注释
C风格
/*
....
*/

三.变量
1.什么是变量?
变量(Variable),是指存储在内存中有名称的信息,其值在程序运行期间可以发生变化;

变量有变量名称和变量值组成;

2.声明变量

$变量名称

$变量名称 = 值

3.变量的命名规范
A.变量名称必须以字母或下划线开头,包含字母、数字、下划线及短横线;
B.变量名称禁止包含空格、斜线、反斜线、星号、冒号等特殊符号;
C.变量名称必须含义明确;
D.变量名称必须遵守“驼峰标记法”;

四.数据类型
PHP支持9种基本数据类型和5种伪类型

1.主要数据类型又分为:

1.1标量类型
1.1.1整型(Integer),可以存储二进制、八进制、十进制及十六进制整数;可以带有符号位
1 2 4 6 16 32 64 128....
二进制以0b开头,包含0和1;
八进制以0开头,包含0~7;
十六进制以0x或0X开头10,包含0~f;
整数的最大范围由常量PHP_INT_MA决定,(与操作系统有关);
如果操过整数的最大范围则会造成整数溢出;

1.1.2浮点型(FLOAT、DOULE、REAL),其最大存储围为1.79E308,并具有14十进制数字的精度
因为浮点数存在合理的误差,所以尽量避免对浮点数进行比较运算

1.1.3布尔类型(Boolean),只能存储true和false;

1.1.4字符型(string),可以存储任意字符;必须括在定界符之间;
定界符:
单引号、
双引号、
HereDoc:
(结束)自定义定界符;
说明:
A.结束定界符必须位于行首;
B.定界符建议使用CDATA、EOT;
C. NowDoc相当于双引号的作用;
NowDoc:
(结束)自定义定界符;
说明:
A.开始自定义定界符必须在单引号之间;
B.结束定界符必须位于行首;
C.定界符建议使用CDATA、EOT;
D. NowDoc相当于单引号的作用;

1.1.5转义符
\n,换行
\r,回车
\t,水平制表符
\v,垂直制表符
\f,换页(走纸)
\\,反斜线
\$,美元符号
\‘,单引号,只解析\‘和\\两个转义符
\",双引号,可以转义所有转义符
(区别:
1:单引号只解析\‘和\\两个转义符,双引号解析所有转义符
2:单引号内的变量不能被解析,双引号內的变量可以被解析
3:综上所述,单引号的执行效率高于双引号,所以建议在开发时,字符串使用单引号定界符

1.2 复合类型
1.2.1 数组(Array)
1.2.2 对象(Object)
1.2.3 可调用(Callable)

1.3 特殊类型(无法归为其他类型的数据类型)
1.3.1 空值(null),以下情况为空值
A.声明但没有赋值的变量
B.声明了但赋值为null
C.通过unset()函数销毁的变量

1.3.2 资源(Resource):该种无法通过直接声明获取,而只能通过特定的函数来实现;

1.4 伪类型(只是为了说明函数的基本使用而人为的一种数据类型)
mixed(混合),多种类型
number(数值),指整数和浮点;
viod(无用的),如果在参数中,则代表无参数;如果在返回值中,则代表无返回值;
callback(回调函数)

1.5 函数的基本使用
函数是计算机已经封装好的代码段,其可以完成特定的功能;
返回值 函数名称([参数类型 参数,·····])
说明:
A.方括号代表可选项;
B.参数类型代表在调用函数时,参数应该传递的数据类型;
C.参数都必须括在小括号里面;
D.返回值代表程序运行的结果;

四.运算符

1.作用划分
1.1 数学运算符:+(正号)、—(负号)、*(乘号)、/(除号)、%(取余)、+(加)、—(减);
引申:
判断x为奇数还是偶数==》x % 2,如果结果为 1 则是奇数,否则为偶数;
只要是有规律的出现,则可以通过取余进行操作;

1.2 字符运算符:. 运算结果为字符型

1.3 赋值运算符:=、+=、-=、*=、/=、%=、.= 运算结果为数值型或字符型

1.4 比较运算符:>、>=、==、、!=、 相等与全等的区别:相等时将进行类型的转换;而全等时不进行数据类型的转换

1.5 自增/自减运算符:$i++、$i--、++$i、--$i;
后缀形式:先使用,后加减
前缀形式:先加减,后使用
说明:自增/自减不影响布尔型;

1.6 逻辑运算符
!(逻辑非)
&&(逻辑与),两者同时为真,结果为真;否则为假;
||(逻辑或),两者中一个为假,结果为假;否则为真;

短路求值:在进行逻辑与和逻辑或运算时,只要第一个表达式的结果
可以确定整个表达式结果时,第二个表达式将忽略执行;

造成短路求值的情况有:
A.逻辑与运算时,第一个表达式的结果为false;
B.逻辑或运算时,第一个表达式的结果为true;

1.7 执行运算符:‘‘(反引号);

1.8 错误抑制符 @
说明:该运算符只能应用对表达式有效;

2.按参加操作的操作数数量

单目运算符:只有一个操作数的运算符,如+(正号)、—(负号)、!、@

双目运算符:有两个操作数的运算符,如*、/、>、>=、&&、||等

三目运算符:有三个操作数的运算符;
expression ? value1 : value2(如果expression为真,返回value1,否则返回value2)

expression ?: value2(如果expression为真,则返回自身,否则返回value2)
原型是 expression ? expression : value2;

3.运算符的优先级
一、二、三、赋值
数学、比较(先计算不等的,再计算相等的)、逻辑(&&、||)


三、数据类型转换

PHP是一种弱类型的编程语言;

3.1 转换成字符型的原则
A.数值将直接转换成数字字符串;
B.布尔型true将转换成字符串‘1’;false将转换成空字符串‘’;
C.null将转换成空字符串‘’;
D.数组将转换成字符串‘Array’;

3.2 转换成数值型的原则
A.如果字符串为合法的数字字符串,且不包 含.或e或E且不超过整数的
最大范围时,将转换成整数;否则转换成浮点型;
B.非法数字字符串将转换成整数0;
C.布尔型true将转换成整数1;false将转换成整数0;
D.null将转换成整数0;

3.3 转换成布尔型的原则
以下值将转换成布尔型的false:
A.false;
B.整数0或浮点数0;
C.字符串‘0‘或字符串‘‘;
D.没有成员的数组;
E.null;
其他的都将被转换成布尔型的true;

3.4 转换成数组型的原则
A.标量类型将转换成只有一个成员的数组了;
B.null将转换成空数组

一、常量
1.什么时常量?常量时一个简单值的标识符,常量一经定义无法修改。

2.声明常量
define(string name,mixed value)
说明:
A.常量名称在定义或使用时无需美元符号$;
B.常量名称必须全部大写字母;
C.常量值的类型只能为标量类型(整型、浮点型、布尔型、字符型)及数组(PHP7新增);
D.常量的作用域是超全局的;

3.魔术常量
__LINE__;返回行号
__FILE__;返回文件完整的路径及名称
__DIR__;返回 directory 文件完整的路径
__FUNCTION__;返回函数名称
__CLASS__;返回类名称
__METHOD__;返回方法名称
__TRAIT__;返回trait名称
__NAMESPACE__;返回命名空间名称


4.系统常量
PHP_VERSION,返回PHP版本;
PHP_OS,返回操作系统;
PHP_INT_MAX,返回整数的最大值;
PHP_INT_MIN,返回整数的最小值;
PHP_SAPI,返回PHP的运行方式;


二、内置函数库
说明:内置函数库属于PHPCore的组成部分;
1.字符函数
说明:
A.字符串从0开始编号
B.如果省略$length参数,则返回从起始位置到字符结束之间的内容
C.如果$start参数为负数,则倒数;
D.如果$length参数为负数,则代表从结尾处到指定位置的字符被忽略;

str_shuffle
描述:随机打乱字符串
语法:string str_shuffle (string $str)

strtolower
描述:将字符串转换成小写字母
语法:string strtolower (string $string)

stroupper
描述:将字符串转换成大写字母
语法:string stroupper (string $string)

ucfirst
描述:将字符串的首字母转换成大写
语法:string ucfirst (string $str)

lcfirst
描述:将字符串的首字母转换成小写
语法:string lcfirst (string $str)

ucwords
描述:将字符串中的每个单词的首字母转换成大写
语法:string ucwords (string $str)

str_replace
描述:字符串替换
语法:string str_replace (string $str)

strpos
描述:字符串第一次出现的位置(区分大小写)
语法:int strpos (string $haystack,string $needle)

stripos
描述:字符串第一次出现的位置(不区分大小写)
语法:int stripos (string $haystack,string $needle)

strrpos
描述:字符串最后一次出现的位置(区分大小写)
语法:int strrpos (string $haystack,string $needle)

strripos
描述:字符串最后一次出现的位置(不区分大小写)
语法:int strripos (string $haystack,string $needle)

md5
描述:计算字符串的md5哈希值
语法:string md5(string $string)

strlen
描述:返回字符串的长度
语法:int strlen(string $string)

2.数学函数
pow
描述:幂运算
语法:number pow(number base,number exp)

sqrt
描述:求平方根
语法:float sqrt(float arg)

ceil
描述:向上取整
语法:float ceil(float $value)

floor
描述:向下取整
语法:float floor(float $value)

rand
描述:产生随机数
语法:int rand(viod)
int rand(int min,int max)

mt_rand
描述:产生更好的随机数
语法:int mt_rand(void)
int mt_rand(int $min,int $max)

round
描述:四舍五入
语法:float round(float $val[,int $precision=0])


字符串替换
区分大小写:mixed str_replace(mixed $search,mixed $replace, mixed $subject)
不区分大小写:mixed str_ireplace(mixed $search,mixed $replace, mixed $subject)


3.日期时间函数

三、流程控制语句

1、分支语句
1.1 if语句
1.1.1 if语句
if(coondition){
....
}
coondition的结果应该为布尔类型;如果不是布尔类型将自动进行数据类型转换

1.1.2 if...else语句
if(condition){
....
}else{
....
}

1.1.3 if...else if...else语句
if(condition){
...
}else if(condition){
...
}else if(condition){
...
}... else{
...
}

1.2 switch语句
switch(测试变量){
case 值1:
...
break;
case 值2:
...
break;
case 值3:
...
break;
...
defaule:
...
break;
}
(测试变量的数据类型只能为整型或字符串)
**defaule语句不是必须位于switch语句的最后;无论其在什么位置,其一定是最后被执行(前提是没有符合的case值)

1.3 for语句
for(expr1;expr2;expr3){
...
...
}
说明:
1 2 3 4 5 6 7 8 9 10 11 12
for($i=1;$i A.expr1无条件执行一次,用于变量的初始化;
B.expr2在每次循环前执行一次,以判断条件是否符合,从而决定能否进入循环体;
C.expr3在每次循环执行完成后执行一次;用于为变量重新赋值(步长值)

2、循环语句
while语句
while(condition){

}
如果condition的结果为true,则执行循环体;如果结果为false,则终止循环
当型循环(前测型循环)先测试(条件),(如成功)再执行;

do ... while语句
do{
...
}while(condition);
后测型循环:先执行代码,再测试(条件是否成立,如果成立,则进行下一次循环;如果不成立,则跳过循环执行后续代码)


while语句\do...while语句之间的区别
1、for\while属于前测型循环;do...while属于后测型循环
2、for\while至少执行零次;do...while至少执行一次

五.
一、日期时间库
time()
描述:返回Unix时间戳
时间戳(Timestamp),从公元1970-01-01 00:00:00到现在的秒数;

date_default_timezone_set
描述:设置默认时区
语法:date_default_timezone_set(string $timezone_identifier)

date_default_timezone_get
描述:获取默认时区
语法:string date_default_timezone_get(void)

date()
说明:格式化日期
语法:string date(string $format[,int $timestamp=time()])
说明:
A.如果省略$timestamp参数,则默认认为当前时间戳(即time())
B.常见的日期时间格式
Y:四位的年份
m:两位的月份(01~12)
d:两位的日期(01~31)
H:两位的小时,24进制(00~31)
i:两位的分钟(00~59)
s:两位的秒(00~59)

microtime()
描述:返回当前Unix时间戳和微秒数
语法:mixed microtime([bool $get_as_float])
说明:
A.如果$get_as_float参数为true,则微秒数作为浮点数返回
B.如果$get_as_float参数为false,则返回以空格分隔的字符串,形式如 ”微妙 秒“

strtotime()
描述:将任何字符串的日期时间描述解析为Unix时间戳
语法:int strtotime(string $time)


数组
1.数组是一组相关数据的容器;
2.声明数组
array([key=>]value[,...])
PHP5.4之后可通过简捷方法声明数组
[[key=>]value[,...]]
说明:
A.key的类型只能为整数(索引)或字符型(关联数组)
B.value的数据类型可以为任意数据类型
C.索引数组适用于成员数量不定数据的集合
D.关联数组适用于成员数量固定,且作用明确的数据集合;
E.数组最后一个成员后的逗号可以省略;
F.声明数组的特殊情形
a.在声明数组时,第一个没有指定key的成员其key为已有最大key+1,前提是已经存在key都是正整数
b.在声明数组时,第一个没有指定key的成员其key为0,前提是已经存在key都是负整数
c.在声明数组时,如果已经存在key都是字符串(关联数组),那么第一个没有指定key的key为0;
d.key如果为浮点数,则自动转换成整数(去掉小数点后面部分);
e.true转换成1,false转换成0;
f.null转换成空字符串‘‘;


2.访问和操作数组成员
通过 “数组名称[key]” 即可访问数据成员
通过 “数组名称[key] = value” 即可修改数据成员(如果key存在则覆盖以前的值;否则添加数组成员)
还可以通过 “数组名称[] = value” 进行数组成员的添加,此时的key为已有的最大 key+1;
还可以通过 “数组名称[] = value” 的方式来新建数组;

3.数组遍历
foreach($array as $key => $value){
...
}

foreach($arraay as $value){
...
}

 

数组函数库
count
描述:统计数组中包含的成员数量
语法:int count(array $array)

explode
描述:使用分隔符来拆分字符串
语法:array explode(strring $delimiter,string $string)

join/implode
描述:将数组的成员通过分隔符连接成字符串
语法:string implode (string $glue,array $pieces)
string implode (array $pieces)

array_keys() 函数返回包含数组中所有键名的一个新数组。

array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。

in_array() 函数搜索数组中是否存在指定的值。

array_key_exists() 函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。


移动数组内部指针
第一个 - mixed reset(array &$array)
下一个 - mixed next(array &$array)
上一个 - mixed prev(array &$array)
最后一个 - mixed end(array &$array)
说明:
end (array $array) 函数适用于索引和关联数组
$array(count ($array)-1) 表达式仅适用于从0开始编号连续的索引数组


一、数组函数库

array_unshift
描述:在数组的开头添加一个或多个成员
语法:int array_unshift (array $array[,mixed $...])

说明:返回数组的新长度;
所有的索引数组将重新编号;关联数组保持不变

array_push
描述:在数组的末尾添加一个或多个成员
语法:int array_push (array $array[,mixed $...])

说明:返回数组的新长度;
所有的索引数组将重新编号;关联数组保持不变

array_shift
描述:从数组的开头删除一个成员,并返回该成员
语法:mixed array_shift (array $array)

特点:都将返回删除的成员

array_pop
描述:从数组的结尾删除一个成员,并返回该成员
语法:mixed array_pop (array $array)

特点:都将返回删除的成员


array_sum 对数组中所有值求和

 

二、预定义变量
$_GET

$_POST :存储表单以 POST 方式提交的数据

$_REQUEST :文件上传时的 HTML 表单要求
1.表单的提交方式只能为POST
2.表单必须设置 enctype="multipart/form-data" 属性

返回一个二维的关联数组,第一维为浏览框的名称,第二维包含五个成员
name: 上传文件的文件名称
type: 返回上传文件的 MIME 类型
error: 上传文件过程中产生的错误代码 -- 0代表没有错误
size: 上传文件的字节数(以字节单位)
tmp_name:上传文件在服务器上存储的临时位置和名称


常见的 MIME 类型
HTML 文件 text/html
CSS 文件 text/css
JavaScript 文件 text/javascript
GIF 图像 image/gif
JPG/JPEG 图像 image/jpeg
PNG 图像 image/png


error
UPLOAD_ERR_OK , 其值为0,代表没有错误
UPLOAD_ERR—_ini_size,其值为1,代表上传文件超过PHP配置文件(upload_max_filesize = 2M)规定的字节数
UPLOAD_ERR_FORM_SIZE,其值为2,代表上传文件超过表单(隐藏域,名称为 MAX_FILE_SIZE)规定的字节数
UPLOAD_ERR_PARTAL,其值为3,代表文件部分被上传
UPLOAD_ERR_NO_FILE,其值为4,代表没有上传文件
UPLOAD_ERR_NO_TMP_DIR,其值为6,代表没有找到临时目录
UPLOAD_ERR_CANT_WRITE,其值为7,代表临时目录不可写
UPLOAD_ERR_EXTENSION,其值为8,代表某些PHP扩展导致上传失败


$_ENV

$_SESSION

$_COOKIE

$_FILES

$_SERVER

$GLOBALS


说明
a.所有的预定义变量是数组;
b.所有的预定义变量都是超全局作用域;


预定义变量 —— $_FILES
文件上传时的信息存储在 $_FILES 预定义变量中,
$_FILES[broeser][‘name‘],返回上传文件的名称
$_FILES[broeser][‘type‘],返回上传文件的 MIME 类型
$_FILES[broeser][‘size‘],返回上传文件的字节数(以字节为单位)
$_FILES[broeser][‘error‘],返回上传文件的错误代码 _ 0代表没有错误
$_FILES[broeser][‘tmp_name‘],返回上传文件产生的临时文件名称


move_uploaded_file

 


什么是自定义函数:自定义函数是指程序员根据项目的需求而封装可以的重复执行的代码段;

自定义函数的特点是:一次定义,多次使用;


2.定义自定义函数:

function 函数名称([参数名称[=值][,...]]){
...
return 返回值

}

说明:
A.函数名称的命名规则与变量命名规则相同;
B.建议函数名称以动词来开头,如:set,get;

3.函数的调用
函数名称([实参,...])

4.函数的参数
A.自定义函数有零个或多个参数;
B.多个参数之间以逗号分隔;
C.自定义函数的参数的数量无限制(一般为1~5之间);
D.参数的数据类型为任意数据类型(资源除外);
E.有默认值的参数称为可选参数;没有默认值的参数称为必选参数;所有的必选参数必须位于所有可选参数之前;
F.针对不固定数目参数的自定义函数
PHP5.6之后,用...表示,如
function avg(...$avg){
...
}
此时 $avg 会以索引数组的形态包含所有传递的数据;


php5.6之前的解决方案是通过PHP的函数来实现,包括有:

func_get_avgs
描述:获取自定义函数的参数所形成的数组
语法:func_get_avgs(void)

func_get_avg
描述:获取参数数组中指定位置的参数
语法:func_get_avg(int $key)

func_num_avgs
描述:获取参数的总数
语法:func_num_avgs(void)

说明:以上三个函数只能使用在自定义函数/方法的内部


返回值
说明:
A.return 语句将终止函数的执行,....
B.返回值的数据类型可以为任意数据类型(资源除外);
C.函数永远只有一个返回值;如果有多个值,则需要尝试用数组/对象进行封装
D.return语句将终止函数的执行;


包含文件
include(‘文件的路径及名称‘)
include_once(‘文件的路径及名称‘)
require(‘文件的路径及名称‘)
require_one(‘文件的路径及名称‘)

include与require之间的区别
如果包含文件不存在,include语句将产生警告级错误;require语句将产生致命级错误;
如果包含文件不存在,include语句将继续执行后续代码;require语句将终止执行后续代码;

php基础

标签:val   script   ber   变量   逻辑   tar   ext   定位   计算   

原文地址:https://www.cnblogs.com/lujieting/p/12465830.html


评论


亲,登录后才可以留言!