序列化和反序列化
function cache(string $name, array $data=null){
//'cache'是文件夹的名称 DIRECTORY_SEPARATOR是系统分隔符
#创建一个变量 里面存放着一个文件的路径
$file = 'cache'.DIRECTORY_SEPARATOR.md5($name).'.php';
if (is_null($data)) { #判断数据是否为空
#判断文件是否存在,如果存在则获取文件,否是返回一个空,赋值到变量中
$content = is_file($file)?file_get_contents($file):null;
#反序列化一下数据并判断,有数据则返回数据,没有数据则返回空
return unserialize($content)?:null;
} else {
//当判断文件不为空
#数据序列化并且把数据写入我们定义好的文件路径变量中
return file_put_contents($file,serialize($data));
}
}
$config = include 'database.php';
cache('database',$config);
时间函数
-
获取时间戳并且转换
// echo date('Y-m-d H:i:s',strtotime('NOW')); //获取当前时间戳并且,转为年月日 时分秒 echo date('Y-m-d H:i:s',strtotime('next friday')); //获取下周五的时间 -
利用面向对象的方式控制时间
#通过php面向对象 类的方式来管理时间 //DateTime DateInterval DateTimeZone $dateTime = new DateTime('2022-3-5 09:6:6');//加入参数可以自定义时间 $dateTime->setDate(2020,9,9);//传入参数的方式自定义 $dateTime->setTimestamp(time());//利用时间戳方法自定义时间 echo date('Y-m-d H:i:s',$dateTime->format('U')); // echo $dateTime->format('Y-m-d H:i:s'); // echo date('Y-m-d H:i:s',strtotime('NOW')); //获取当前时间戳并且,转为年月日 时分秒 // echo date('Y-m-d H:i:s',strtotime('next friday')); //获取下周五的时间//利用静态方法,不需要new出来对象 $dateTime = DateTime::createFromFormat('Y-m-d H:i:s','2020-08-07 08:08:08'); echo $dateTime->format('Y-m-d H:i:s'); -
俩个时间的时间差值
$dateTime = new DateTime(); $dateTime2 = new DateTime('2029-9-9 9:9:9'); //计算俩个时间的差值 $interval = $dateTime->diff($dateTime2); $format = '距离时间 %y年 %m月 %d 天 %h小时 ,总共 %a天数'; echo $interval->format($format); -
增加指定多少时间或减少多少时间
//增加时间
$dateTime = new DateTime();
echo $dateTime->format('Y-m-d H:i:s').'<br/>';
//这里只是写出功能并未使用到某个方法中
#P为年月日增加 T为时分秒增加
$interval = new DateInterval('P2DT2H5M'); //P2DT2H5M新增2天2小时5分钟
//时间增加
$dateTime->add($interval);
echo $dateTime->format('Y-m-d H:i:s').'<br/>';
//时间减少
$dateTime->sub($interval);
echo $dateTime->format('Y-m-d H:i:s').'<br/>';
数学函数
//向上取整 向下取整
//向上取整
echo ceil(10.1);
//向下取整
echo floor(10.9);
//取最大值
echo max(1 , 2);
//取最小值
echo min(1 , 2);
//四舍五入
echo round(10.3);
//取随机数
echo mt_rand(1,999);
字符串的知识区块
#读取字符串中的某一个值,可以使用数组的方式来取
$str = '123456789abcdefghijklmnopqrstuvwyz';
echo $str[26];
#查看字符串中的字符长度strlen($str) 默认从1开始而不是0
echo strlen($str);
-
随机生成验证码
function code(int $len=5):string { $str = '123456789abcdefghijklmnopqrstuvwyz'; $code = ''; for ($i=0; $i < $len ; $i++) { $index = mt_rand(0,strlen($str)-1); $code.=$str[$index]; } return $code; } echo code(6);页码
$total = 100; min($total),max(1,$_GET['page'??1]);
-
正则表达式
-
是专门处理字符串的,虽然处理字符串的函数有很多,正则可以补充很多处理函数的不足,且更灵活。且再多个语言中都是有正则表达式的。
-
定界符
- php中的定界符可以是//、@@、##中任意一种,在特殊的场景使用适合的定界符即可
-
//这条正则的含义是,判断一个字符串中是否有a这个字符。只要判断对象中有符合的字符就算判断成功
#preg_match()匹配函数,可传入俩个参数,一个是判断条件,一个是判断对象
$status = preg_match('/a/','afffaad');
$this
$this表示实例化后的具体对象