分类 PHP 下的文章

C 语言 | 求 3x3 矩阵对角线之和

C 代码如下:

#include <stdio.h>
//求3x3的整型矩阵对角线之和

int main(){
    int i,sum1=0,sum2=0;
    int arr[3][3]={{1,9,5}, {2,6,8}, {4,5,7}};

    //第一个对角线(左上 至 右下):0,0  1,1     2,2
    //第二个对角线(右上 至 左下):0,2  1,1  2,0
    //相加的和为:1+6+7 + 5+6+4  = 29

    for(i=0; i<3; i++){
        sum1 += arr[i][i];//<左上 至 右下> 之和
        sum2 += arr[i][-(i-3)];//<右上 至 左下> 之和。3 指的是数组“列”长度
    }

    printf("两个对角线之和为:%d", sum1+sum2);

    return 0;
}

运行结果:

两个对角线之和为:29
--------------------------------
Process exited after 0.1137 seconds with return value 0
请按任意键继续. . .

ThinkPHP 5.1 中间件笔记

在用 ThinkPHP 写 API 的时候,在同一个模块下,有些方法(function)需要校验登录,有一些方法(function)不需要检验登录,然后我使用了“笨方法”,需要进行校验登录的方法(function)上都得写几行判断是否登录的,导致代码冗余,代码质量不高,今天仔细阅读了 ThinkPHP 5.1 开发文档,学习了一个新技能——中间件(https://www.kancloud.cn/manual/thinkphp5_1/564279

在此记录下,因为对 ThinkPHP 框架 了解不够深入,难免有错误之处,请dalao指点更正????


创建中间件

Think PHP 5.1 关于中间件详细用法请查看官方文档:https://www.kancloud.cn/manual/thinkphp5_1/564279

方法一:

使用命令创建快捷创建(需要设置好 PHP 变量,你看不懂这个你看下一个方法吧):

php think make:middleware Auth

不出意外,会返回如下提示:

E:\PhpStorm_Project\x.nowtime.cc>php think make:middleware Auth
Middleware created successfully.

然后就会在 application/http/middleware 路径下创建一个 Auth.php 文件

方法二:

手动创建 application/http/middleware/Auth.php 文件

编写代码

编辑 application/http/middleware/Auth.php 文件,编写业务逻辑:

- 阅读剩余部分 -

PHP Class 实现“复读机”

水平有限,不知道叫什么,但有时能够用得到,备份一下了

<?php
/**
 * Created by PhpStorm.
 * User: NowTime
 * Date: 2019/4/11
 * Time: 13:44
 */

class Repeat
{
    private $word = '';

    public function setWord($word){
        $this->word = $word;
    }

    public function getWord()
    {
        return $this->word;
    }
}

$Repeat = new Repeat();
$Repeat->setWord('我是复读机');//设置复读
echo $Repeat->getWord();//输出结果

PHP 计算今天是本学期的第几周

代码如下

2019-03-11 12:40 更新代码,由于上次仓促,未考虑周全,今天抽空更新一下

/**
 * 计算当前是本学期的第几周
 * 默认是以 2019-02-25 为开学时间
 * @param int $start_timestamp  本学期开始时间戳,可以用 strtotime 函数获取,如 strtotime('2019-02-25')
 * @return int
 */
function now_week($start_timestamp=1551024000)
{
    date_default_timezone_set('Asia/Shanghai');
    $this_week_monday = strtotime("monday", $start_timestamp);//获取指定时间中,周一时间戳

    //由于 strtotime("monday", $start_timestamp)  获取的周一时间戳是 周一 08:00:00
    //所以需要减去 28800秒 即得到周一 00:00:00 时间戳
    $this_week_monday = $this_week_monday-28800;

    //使用 ceil 函数进行“向下取整”
    // ceil(3.4)    输出结果为 4
    // ceil(3.6)    输出结果为 4
    return ceil((time()-$this_week_monday)/604800);
}

实际应用:

Snipaste_2019-03-11_12-45-55.png

PHP 判断 Email 在 Gravatar 有没有自定义头像

<?php
function check_have_avatar($email){
    $md5 = md5(strtolower(trim($email)));
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://www.gravatar.com/avatar/{$md5}");
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);

    if(md5($result) === 'd5fe5cbcc31cff5f8ac010db72eb000c'){
        return false;
    }

    return $result;
}

if(!check_have_avatar('ne@nowtime.cc')){
    echo '没有自定义头像';
}else{
    echo '有自定义头像';
}