今日分享

人生路上难免曲折,生活中亦难免有磨难尽管征途漫漫,但也要一路放歌,潇洒奔向明天。

——《人民日报》

PHP获取任意时间段,在配置项范围的取值

// 给定的JSON数据配置项

$jsonData = '{"23:00-05:00":"14","05:00-23:00":"10"}';

// 将JSON字符串解码为关联数组
$config = json_decode($jsonData, true);

// 传入的任意时间段
$curr_time = time();

// 将当前时间转换为小时和分钟的格式
$curr_hour = date('H', $curr_time);
$curr_minute = date('i', $curr_time);
// 计算对应时间有多少秒
$curr_second = ($curr_hour * 3600) + ($curr_minute * 60);
// 判断给定时间段所属的配置项
$value = null;
foreach ($config as $key => $val) {
    // 将时间范围拆分为开始时间和结束时间
    list($begTime, $endTime) = explode('-', $key);
    // 将开始时间和结束时间的小时和分钟分别拆分
    list($begHour, $begMinute) = explode(':', $begTime);
    list($endHour, $endMinute) = explode(':', $endTime);
    // 计算对应时间有多少秒
    $beg_second = ($begHour * 3600) + ($begMinute * 60);
    $end_second = ($endHour * 3600) + ($endMinute * 60);

    // 验证时间是否跨夜
    if ($beg_second > $end_second){
        if ($curr_second >= $beg_second || $curr_second < $end_second){
           $value = $val;
        }
    }else{
        if ($curr_second >= $beg_second && $curr_second < $end_second){
            $value = $val;
        }
    }
}
echo $value;

php读写MongoDB中的binary数据

官方文档
https://www.php.net/manual/zh/class.mongodb-bson-binary

final public MongoDB\BSON\Binary::jsonSerialize(): mixed

jsonSerialize处理binary数据

读取如

$result = $result->jsonSerialize();
echo $result['$binary'];
echo $result['$type'];

保存数据

$binary = '666';
$type = 0;
$result = new Binary($binary, $type);
// $binary存储会自动转base64格式

支付宝EasySdk(PHP版)支付回调验签无法通过问题

亲身经历,官方文档坑
THPHP6,正常导入

composer require alipaysdk/easysdk

直接上内容,官方验签

//1. 设置参数(全局只需设置一次)Factory::setOptions(getOptions());
$result = Factory::payment()->common()->verifySign($_POST);

然而不好意思出现错误无法通过;主要原因fund_bill_list数据JSON字符串传递时序列化问题

// 请求数据处理
$data = request()->post();
$data = http_build_query($data);
$data = explode('&', $data);
$new_data = [];
foreach ($data as $key=>$val){
$rows = explode('=', $val);
    $new_data[$rows[0]] = urldecode($rows[1]);
}
if (!empty($new_data['fund_bill_list'])){
    $new_data['fund_bill_list'] = str_replace('&quot;', '"', $new_data['fund_bill_list']);
    $json = json_decode($new_data['fund_bill_list'], true);
    if (json_last_error() !== JSON_ERROR_NONE) {
         $this->consoleLog('Failed to decode JSON: ' . json_last_error_msg());
    }
    $new_data['fund_bill_list'] = json_encode($json);
}
// 才能去验证
$result = Factory::payment()->common()->verifySign($new_data);

如对你有帮助记得点赞哦~