PHP笔记

文章目录

    • PHP
      • 一、什么是PHP
      • 二、PHP集成环境的安装
      • 三、WampServer
      • 四、PHP基础
        • PHP标准格式
        • php注释
        • 变量的定义
        • 传值替换
        • 变量的作用域
        • 变量的检测与删除
        • static静态变量
        • 进制转换
        • 响应头
        • 字符串边界定位符
        • 字符串函数
        • 常量的定义
        • 三元表达式
      • 五、基础
        • 文件引入
        • 点函数
        • 参数类型约束以及严格模式
      • 数组
        • 自定义
        • array_walk_recursive()递归改变值传递
        • var_export合法转换为字符串
        • 序列化与反序列化(serialize and unserialize)
        • 使用序列化操作文件的读取与存入
      • 时区
        • 时间戳
        • 获取时间戳
        • 使用技巧计算时间差
      • 数学函数
        • 使用数学函数获取随机验证码
      • 正则
      • 文件读写
        • 使用数学函数获取随机验证码
      • 正则
      • 文件读写

PHP

一、什么是PHP

PHP(Hypertext Preprocessor)即超文本预处理器,是在服务器中执行的脚本语言,WEB开发可以并入HTML,主要作用帮助开发人员快速开发动态网页。

二、PHP集成环境的安装

WampServer作为已经配置完成的PHP集成环境

安装可百度安装

下载地址:https://www.wampserver.com/

三、WampServer

右击language 选择中文

其中,可以访问的页面在www文件夹中,默认执行index.php文件

启动时可能会遇见的问题

因为wampserver的默认启动服务器是80,并且若本机上下载sql server 数据库时,这两个将会冲突

所以,出现冲突时,需要修改wampserver的端口号

具体如下,

找到根目录/l\wamp\bin\apache\apache2.4.9\conf环境下的httpd.conf文件

修改里面的参数 listen 和ServerName的端口号(默认80)改为所需的(默认8080)

在这里插入图片描述

在这里插入图片描述

启动~测试

在这里插入图片描述

出现此页面即可表示成功

四、PHP基础

PHP标准格式
<?php//php代码块?>
php注释
//  单行注释
# 单行注释
/*
多行注释
*/

php执行符 ;

变量的定义

格式

$name='abc';
<?php$name ="abc";echo $name;
?>

!在这里插入图片描述

关于变量的定义,可以使用数字字母下划线(不能以数字开头)

$_ ="abc";  //可以使用
传值替换

第一种情况

<?php$a=1;$b=$a;echo $a;echo $b;
?>

结果打印11

第二种情况

<?php$a=1;$b=&$a;echo $a;echo $b;
?>

结果打印11

在第一种情况下 将b值在等于a后再赋值

<?php$a=1;$b=$a;$b=3;echo $a;echo $b;
?>

结果打印13

在第二种情况下 将b值在等于a后再赋值

<?php$a=1;$b=&$a;$b=3;echo $a;echo $b;
?>

结果打印33

分析

在这里插入图片描述

第一种情况,分别指向各自的内存地址,所以当改变b的值时a不会改变

第二种情况,两条共同指向a的内存地址,所以当改变b的值时全部都会改变

变量的作用域

变量嵌套使用

<?php$name="hello";$$name="world";echo $hello;
?>

打印输出

在这里插入图片描述

$ n a m e = name = name=hello

变量定义域

<?php$name="hello World";function hs(){echo $name;}hs();
?>

在这里插入图片描述

外部变量不能被内部方法访问

这个时候就需要global关键字,这个关键字用来获取全局变量

<?php$name="hello World";function hs(){echo $GLOBALS["name"];}hs();
?>

打印结果成功获取

<?php$name="hello World";function hs(){global $name;echo $name;}hs();
?>
变量的检测与删除

判断一个变量是否存在

issetunset
是否存在删除元素
<?php$name="hello World";var_dump(isset($name));
?>

在这里插入图片描述

<?php$name="hello World";var_dump(isset($names));
?>

在这里插入图片描述

删除元素

<?php$name="hello World";unset($name);var_dump(isset($name));
?>

在这里插入图片描述

小案例

<?php$name ="a123";function hs(){var_dump(isset($name));}hs();
?>

打印结果不存在

<?php$name ="a123";function hs(){global $name;var_dump(isset($name));unset($name);}hs();var_dump(isset($name));
?>

结果打印两个true

说明再方法内删除不了全局变量

static静态变量

static关键字可以将变量保存在内存当中

<?phpfunction hs(){$sum=1;$sum+=1;return $sum.'<hr>';}echo hs();echo hs();
?>

在这里插入图片描述

<?phpfunction hs(){static $sum=1;$sum+=1;return $sum.'<hr>';}echo hs();echo hs();
?>

在这里插入图片描述

使用了static关键字,就自动将被static修饰的变量储存起来

等待下一次调用的时候不执行,仅仅执行第一次

进制转换

1.八进制转化为10进制

  echo octdec(144);   //8进制转换为10进制-结果100

2.十六进制转换为10进制

    echo hexdec(144);   //16进制转换为10进制-结果324
响应头

响应头,用来解决汉字编码问题

未添加响应头时

<?phpecho "PHP天下第一";
?>

此时页面显示

在这里插入图片描述

添加响应头

<?php
header("Content-type:text/html;charset=UTF-8");echo "PHP天下第一";
?>

此时打印

在这里插入图片描述

正常显示

字符串边界定位符
<?php$str="<h1 style="color:red">PHP</h1>"
?>

比较常见的问题,双引号两两配对,导致出现问题

在这里插入图片描述

常见的解决方法

1.字符转义

<?php$str="<h1 style=\"color:red\">PHP</h1>";echo $str;
?>

在这里插入图片描述

2.边角定位

格式<<<php php;

<?php$sst=<<<sst<h1>web</h1><h2 style="color:green;">PHP</h2>
sst;echo $sst;
?>

适用于多文本行输出

其中值得注意的是

在这里插入图片描述

两个标记符之间不能有空格,进一步说明

第一个sst标记符后面不能存在空格

第二个sst标记符前面不能存在空格

还有标识符号可以取除了关键字以外的所有字符,但必须保证上下标记符保持一致;

字符串函数

1、变量名长度

(strlen)=>strlen(字符串)

<?php $str ="abcdefg";echo strlen($str);
?>

打印结果为7;

打印汉字个数-(mb_strlen);

首先使用strlen函数

    $str ="发大财干大饭";echo strlen($str);

结果打印为18;因为汉字一个汉字三个字节;

所以我们需要实现个数时,就需要使用mb_strlen这个函数

<?php 
header("Content-type:text/html;charset=UTF-8;");$str ="发大财干大饭";echo mb_strlen($str,"utf-8");
?>

结果打印为6;正好为汉字个数;

2.筛选去除函数

trim(变量名,待筛选去除字符(默认空格));

<?php $str =" www.haojiahuo.com ";echo strlen($str);echo "<hr>";echo strlen(trim($str));
?>

打印结果:

在这里插入图片描述

延伸函数,右去除和左去除

右侧去除左侧去除
rtrim()ltrim()

3.首字母大写

第一个首字母大写=》 ucfirst(string)

<?php $stt="hello world";echo ucfirst($stt);
?>

将首字母大写 结果打印Hello world

将所有单词首字母大写=》ucwords(string);

<?php $stt="hello world";echo ucwords($stt);
?>

结果打印 Hello World

4.分隔符

explode();根据字符分割返回数组

<?php $str ="haojiahuo.com";print_r(explode(".",$str));
?>

结果打印

在这里插入图片描述

分割成两个数组

implode(); 连接字符

<?php $str =array("www","haojiahuo","com");echo implode(".",$str);
?>

使用自定义连接符连接数组

结果打印 www.haojiahuo.com;

6.分割

substr();

<?php $str ="php.web";echo substr($str,0,3);?>

结果打印php

打印汉字个数

mb_substr();

<?phpheader("Content-type:text/html;charset=UTF-8;");$str ="耗子尾汁";echo mb_substr($str,0,2,"UTF-8");
?>

结果打印 耗子;

常量的定义

常量的定义有两种方法

1.define()

2.const

define(“变量名称”,“变量值”,区分大小写(true or false))

    define("NAME","PHP");echo NAME;

const

    const SEX= "男";echo SEX;

其中变量名一般都应为大写,

判断一个常量是否被定义

defined

    echo defined("SEX");

结果打印为1,说明已经存在,符合

var_dump(defined("SEX_s"));

结果打印false;不存在

三元表达式
echo  true? 1:2;

真=》输出1

假=》输出2

@符可以表示忽略警告

@(20/0);

这样输出会出现警告,当加上@符时,系统自动屏蔽警告

五、基础

文件引入

include引入与require引入

在这里插入图片描述

<?php include 'decc.html';
?>

2.require引入

require("decc.html");

两者区别

使用include引入时,当引入出现错误的可以继续向下加载,反知使用require引入时,必须完全加载成功才可以向下运行;一般建议以require进行引入;

include_once 和 require_once 控制一次加载

例如

function.php

<?php
function show(){echo "php";
}
?>

1.php

<?php
include 'function.php';
echo show();
?>

test.php

<?php
include '1.php';
include 'function.php';
echo show();
?>

每一次引入,相当于一次复制 ,假如test需要两个php文件的引入,但是两个文件有相同的方法,这样就会造成重复创建函数,导致错误

这样就需要include_once 来约定只能加载一次

同理require_once 也是只有一次;

点函数

这需要php版本大于5.60

    function sum(...$number){return array_sum($number);}echo sum(1,2,3,4,5);
参数类型约束以及严格模式

declare(strict_types=1);

数组

自定义

数组改变键以及值的大小写

<?php
return ['HOST'=> 'localhost','poRt'=>3306,'uSEr'=>'root','CAche'=>['hoST'=>'12.13.14.156','USer'=>'localname',],
];
?>

递归变为大写

<?php
$database=include '1.php';//转换为大写function hd_array_change_value_case(array $data,$type){foreach($data as $key=>$value):$action=$type==CASE_UPPER?'strtoupper' : 'strtolower';unset($data[$key]);     //相当于返回再后面追加,所以要去除原有的k  暂时蒙$data[$action($key)]=is_array($value)?hd_array_change_value_case($value,CASE_UPPER):$value;endforeach;return $data;}print_r(hd_array_change_value_case($database,CASE_UPPER));
?>

递归变为小写

<?php$database=include '1s.php';
//转变为小写
function hd_array_change_value_case(array $data,$type){foreach($data as $key=>$value):$action=$type==CASE_UPPER?'strtoupper':'strtolower';$data[$key]=is_array($value)?hd_array_change_value_case($value,$type):$action($value);endforeach;return $data;
}
print_r(hd_array_change_value_case($database,CASE_LOWER));
?>
array_walk_recursive()递归改变值传递

array_walk_recursive方法进入下一层,相当于遍历下一个数组

array_walk_recursive(array,callback,custom)

<?php$database =include '1s.php';function hd_change_value(array $data,$type){array_walk_recursive($data,function(&$value,$key){$value=strtoupper($value);});return $data;};print_r(hd_change_value($database,CASE_LOWER));
?>

进一步使用自定义函数

<?php$database=include '1s.php';function hd_change_value(array $data,$type){array_walk_recursive($data,function(&$value,$key,$type){$action =$type==CASE_LOWER?'strtoupper':'strtolower';$value=$action($value);},$type);return $data;}print_r(hd_change_value($database,CASE_UPPER));
?>
var_export合法转换为字符串
<?php//使用serialize序列化储存以及var_export()转为php合法字符$database=include '1s.php';print_r($database);var_export($database);?>

区别:上:print_r或者var_export()

在这里插入图片描述

序列化与反序列化(serialize and unserialize)
<?php//serialize序列化$database=include '1s.php';$data=serialize($database);echo $data;echo "<br>";$dataser=unserialize($data);print_r($dataser);
?>

在这里插入图片描述

序列化将数组转为php可以识别的合法格式。

反序列化是将上述转变回来

使用序列化操作文件的读取与存入
<?php//文件存储与获取//存 file_put_content()function cache($name,$data=null){$file='cache'.'/'.md5($name).'.php';if($data==null){//取出数据$contents=is_file($file)?:null;return unserialize($contents);}else{//存入数据return file_put_contents($file,serialize($data));}}$database =include '1s.php';cache('database',$database);
?>

运行之后,在cache文件夹下就会出现

在这里插入图片描述

取数据操作

<?php//文件存储与获取//存 file_put_contents()//取 file_get_contents()function cache($name,$data=null){$file='cache'.'/'.md5($name).'.php';if($data==null){//取出数据$contents=is_file($file)?file_get_contents($file):null;return unserialize($contents);}else{//存入数据return file_put_contents($file,serialize($data));}}$database =include '1s.php';print_r(cache('database'));
?>

在这里插入图片描述

时区

date_default_timezone_set(‘PRC’); //设置时区

date_default_timezone_get(); //获取时区

PRC中国国内时区

echo date(‘Y-m-d H-i-s’); 年月日 时分秒

时间戳

指从1970年1月1日到现在的秒数

<?php//记录脚本执行时间。//设置时区date_default_timezone_set('PRC');//封装函数function runtime($starttime=null,$endtime=null){static $cache=[];if(is_null($starttime)){return $cache;}elseif(is_null($endtime)){// 说明我要设置值return $cache[$starttime]=microtime(true);}else{$endtime=$cache[$endtime]?:microtime(true);print_r($cache);return $endtime-$cache[$starttime];}}runtime('start');for($i=0;$i>200000000;$i++){$i++;}runtime('end');echo runtime('start','end');sleep(2);runtime("s1");$a=0;while($a>200000){$a++;}runtime('s2');echo "<hr>",runtime('s1',"s2");echo "<hr>",runtime('start',"s2");
?>

在这里插入图片描述

一般计时(time()) 微妙=》microtime();

其中在microtime中,microtime(true)则开启小数点,例如上图结果。

获取时间戳
<?php
date_default_timezone_set("PRC");
//获取时间戳
echo strtotime('2021-04-18 19:19:19');echo "<hr>";echo date("Y-m-d H:i:s",strtotime("+1 year"));?>
使用技巧计算时间差
<?phpheader('Content-type:text/html;charset=utf-8');date_default_timezone_set("PRC");$time1=new DateTime();$time2=new DateTime("2020-08-18 12:15:20");$time=$time1->diff($time2);// $format='距离你的幸运日还有%a天';$format='距离你的幸运日还有%m月%d天%H时%M分%s秒,一共%a天';echo $time->format($format);
?>

在这里插入图片描述

->diff()差值

描述
%Y
%m
%d
%H小时
%M分钟
%s秒数
%a总天数

add增加值

<?php$time1= new DateTime();$time2= new DateInterval('P2DT3H2M');echo $time1->format('Y-m-d H:i:s');echo '<hr>';$time1->add($time2);echo $time1->format('Y-m-d H:i:s');
?>

在这里插入图片描述

数学函数

函数描述
ceil()向上取整,列如10.2->11
floor()向下取整,例如10.2->10
max(value1,value2)最大值
min(value1,value2)最小值
round()四舍五入
mt_rand(min,max)取得在范围内值
使用数学函数获取随机验证码
<?phpfunction code($str){$randcode='1234567890abcdefghigklmnopqrstuvwxyz';$code='';for($i=0;$i<$str;$i++){$index=mt_rand(0,strlen($randcode)-1);$code.=strtoupper($randcode[$index]);}return $code;}echo code(5);
?>

验证码随机生成

正则

preg_match(‘/\d/’,‘a1234’);

文件读写

<?php//文件的r模式$filename='cache/abc.txt';$inclu=fopen($filename,'r');    //打开文件echo fread($inclu,filesize($filename)),'<br/>';echo fseek($inclu,4);   //光标移动到第5个echo fread($inclu,filesize($filename));
?>
方法描述
fopen($filename,操作)打开一个文件
fread(V1打开的文件,V2文件读取介绍位置)读取文件内容
fseek(V1打开的文件,V2光标移动位置)光标移动

() | 向下取整,例如10.2->10 |
| max(value1,value2) | 最大值 |
| min(value1,value2) | 最小值 |
| round() | 四舍五入 |
| mt_rand(min,max) | 取得在范围内值 |

使用数学函数获取随机验证码
<?phpfunction code($str){$randcode='1234567890abcdefghigklmnopqrstuvwxyz';$code='';for($i=0;$i<$str;$i++){$index=mt_rand(0,strlen($randcode)-1);$code.=strtoupper($randcode[$index]);}return $code;}echo code(5);
?>

验证码随机生成

正则

preg_match(‘/\d/’,‘a1234’);

文件读写

<?php//文件的r模式$filename='cache/abc.txt';$inclu=fopen($filename,'r');    //打开文件echo fread($inclu,filesize($filename)),'<br/>';echo fseek($inclu,4);   //光标移动到第5个echo fread($inclu,filesize($filename));
?>
方法描述
fopen($filename,操作)打开一个文件
fread(V1打开的文件,V2文件读取介绍位置)读取文件内容
fseek(V1打开的文件,V2光标移动位置)光标移动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292768.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat转SpringBoot、tomcat升级到springboot、springmvc改造springboot

Tomcat转SpringBoot、tomcat升级到springboot、springmvc改造springboot 起因&#xff1a;我接手tomcat-springmvc-hibernate项目&#xff0c;使用tomcat时问题不大。自从信创开始&#xff0c;部分市场使用国产中间件&#xff0c;例如第一次听说的宝兰德、东方通&#xff0c;还…

急急急幼教人谁还没用过这天花板神器

幼师姐妹们一定要知道啊&#xff0c;这东西真的全能啊&#xff0c;什么教案&#xff0c;总结&#xff0c;评语都可以写&#xff0c;只要输入清楚需求就行&#xff0c;真的太方便了&#xff01;

【Linux笔记】用户和权限管理基本命令介绍

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux学习 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 ​编辑 前言&#xff1a; 命令&#xff1a; whoami&#xff1a; passwd&#xff1a; useradd&#xff1a; userdel&#xff1a; chm…

Protobuf 编码规则及c++使用详解

Protobuf 编码规则及c使用详解 Protobuf 介绍 Protocol Buffers (a.k.a., protobuf) are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data Protocol Buffers&#xff08;简称为protobuf&#xff09;是谷歌的语言无关、…

一键批量管理HTML文档,轻松删除无用内容,提升网站性能!

随着互联网的快速发展&#xff0c;网站性能优化已经成为每个站长和开发者必须面对的问题。为了提升网站性能&#xff0c;我们需要对HTML文档进行高效的管理和优化。但是&#xff0c;手动管理大量HTML文件不仅效率低下&#xff0c;还容易出错。那么&#xff0c;有没有一种简单、…

Leetcode 452. 用最少数量的箭引爆气球

题意理解&#xff1a; 气球用一个闭区间表示&#xff0c;击中区间内任意一个位置&#xff0c;气球会被引爆。 区间指示了气球的位置和气球的可射击范围。 若两个气球位置有重叠&#xff0c;则一只箭能解决引爆两个气球。 目标&#xff1a;尽可能射击气球重叠最多的位置&#xf…

【数据结构和算法】最大连续1的个数 III

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 滑动窗口解题模板 三、代码 3.1 方法一&#xff1a;滑动窗口 四、…

Ubuntu 常用命令之 top 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 top命令是Linux下常用的性能分析工具&#xff0c;可以实时动态地查看系统中各个进程的资源占用状况&#xff0c;类似于Windows的任务管理器。它可以显示系统总的和分区的CPU使用率、内存使用率、交换区使用率、系统负载、进程数、…

质量好的国产主食冻干猫粮有哪些牌子?推荐十大放心猫粮国产名单

养猫的朋友们应该都知道&#xff0c;猫咪对蛋白质的需求很高&#xff0c;如果猫咪摄入的蛋白质含量不足&#xff0c;就会影响到它们的成长发育。因此&#xff0c;蛋白质的含量对于猫咪的成长发育至关重要。而冻干猫粮是一种高蛋白、高营养、适口性好的产品&#xff0c;不仅能满…

Qt前端技术:3.QSS字体样式

small-caps就是让这个文本中的小写字母用大写的形式写出来并且在用大写的形式表达出来后他本身的大小会变小 有绝对尺寸和相对尺寸的区别 绝对尺寸一般是cm&#xff0c;英寸之类的 相对尺寸如px之类的是由显示器的屏幕分辨率来决定的 如windows用户分辨率一般是96像素点每英…

yocto系列讲解[实战篇]93 - 添加Qtwebengine和Browser实例

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述集成meta-qt5移植过程中的问题问题1:virtual/libgl set to mesa, not mesa-gl问题2:dmabuf-server-buffer tries to use undecl…

软考中级应该选哪个?

选择软考中级科目&#xff0c;应该怎么做&#xff1f; 1.1 软考中级科目有哪些可供选择&#xff1f; 1.2 如何选择适合自己的软考中级科目&#xff1f; 系统集成项目管理工程师真的容易吗&#xff1f; 如何在软考中级阶段选择科目&#xff1f;软考中级共有15个科目。软考共…