每日学习php记录(三)

200 阅读1分钟

序列化和反序列化

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表示实例化后的具体对象