首页
留言
友情链接
标签页
Search
1
那些顶级不落俗套的“美好祝福”
1,948 阅读
2
如何使用JavaScript获取和设置CSS root变量值
1,329 阅读
3
中国历史朝代顺序图
1,171 阅读
4
春和 《江海共余生》
940 阅读
5
唐诗三百首1-5
767 阅读
分享
Web前端
html&css
javascript
Vue
shopify
shoplazza
后端
ThinkPHP
YII2
服务器端
软件安装
问题合集
故事
诗词
生活
学习
学科
语文
数学
英语
物理
化学
生物
政治
历史
地理
自然
其他
抖音
快手
小视频
随笔
易经
书摘
今日话题
登录
/
注册
Search
标签搜索
一年级语文
sunshine
累计撰写
172
篇文章
累计收到
15
条评论
首页
栏目
分享
Web前端
html&css
javascript
Vue
shopify
shoplazza
后端
ThinkPHP
YII2
服务器端
软件安装
问题合集
故事
诗词
生活
学习
学科
语文
数学
英语
物理
化学
生物
政治
历史
地理
自然
其他
抖音
快手
小视频
随笔
易经
书摘
今日话题
页面
留言
友情链接
标签页
搜索到
171
篇与
的结果
2024-05-11
PHP7.4版本下的excel表格导出应用案例
最新版本的phpoffice组件最低版本要求PHP8.0,所以需要安装旧版本的,这里测试挑选了一个1.23的版本可以使用,在项目根目录composer运行安装组件:composer require phpoffice/phpspreadsheet:1.23应用案例:首先定义一个导出表格的函数#[NoReturn] function exportExcel($expTitle, $expCellName, $expTableData, $setWidth = []): void { $spreadsheet = new Spreadsheet(); $spreadsheet->getActiveSheet()->setTitle($expTitle . date('Ymd')); $cellNum = count($expCellName); $len = count($expTableData); // 设置表头字段 foreach ($expCellName as $k => $v) { $spreadsheet->getActiveSheet()->setCellValueByColumnAndRow($k + 1, 1, $v); } // 添加数据 foreach ($expTableData as $k => $v) { for ($i = 0; $i < $cellNum; $i++) { $spreadsheet->getActiveSheet()->setCellValueByColumnAndRow($i + 1, $k + 2, $expTableData[$k][$expCellName[$i]]); } } // // 添加所有边框/居中 // $styleArrayBody = [ // 'borders' => [ // 'allBorders' => [ // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, // 'color' => ['argb' => '333333'], // ], // ], // 'alignment' => [ // 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, // ], // ]; // $total_rows = $len + 1; // 表格总行数要加上表头一栏 // $spreadsheet->getActiveSheet()->getStyle('A1:' . end($setWidth) . $total_rows)->applyFromArray($styleArrayBody); // // 设置列宽 // if ($setWidth) { // foreach ($setWidth as $k => $v) { // $spreadsheet->getActiveSheet()->getColumnDimension($v)->setAutoSize(true); // 列宽自定义 // } // } else { // $spreadsheet->getActiveSheet()->getDefaultColumnDimension()->setWidth(14); // } $filename = $expTitle . date('Ymd') . '.xlsx'; header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . $filename . '"'); header('Cache-Control: max-age=0'); $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('php://output'); die(); }其次处理数据// 导出数据 $list = Db::table('user')->select(); $columns = [ 'id' => 'ID', 'username' => '用户名', 'age' => '年龄', 'gender' => '性别', ]; $columns_fields = array_keys($columns); // 导出数据到csv文件 $xlsData = []; // 导出数据到excel文件 foreach ($list as $key => $value) { foreach ($columns_fields as $k => $v) { if (isset($value[$v])) { $xlsData[$key][$columns[$v]] = $value[$v]; } } } // 编辑表格的title,返回的数据格式是:$xlsCell = ['id', 'username', 'age'] $length = count($xlsData); $xlsCell = []; foreach ($xlsData[$length - 1] as $k => $v) { $xlsCell[] = $k; } // 你的表格一共有多少字段信息需要导出,设置对应的excel坐标,动态判断,从A到Z $cellNum = count($xlsCell); $setWidth = []; for ($i = 0; $i < $cellNum; $i++) { $setWidth[] = chr(ord('A') + $i); } // 调用自定义方法 exportExcel('用户表', $xlsCell, $xlsData, $setWidth);
2024年05月11日
268 阅读
0 评论
1 点赞
2024-04-25
jquery 点击锚点事件并取消scroll事件,平滑滚动至锚点位置
在jQuery中,如果你想要取消由锚点点击触发的滚动事件,你可以使用event.preventDefault()方法来阻止默认的滚动行为。以下是一个简单的例子:$(document).ready(function(){ $('a[href*="#"]').click(function(event){ // 阻止默认的点击事件 event.preventDefault(); // 获取目标位置 var target = $(this.hash); target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); // 执行平滑滚动 if (target.length) { $('html, body').animate({ scrollTop: target.offset().top }, 1000); } }); });
2024年04月25日
311 阅读
0 评论
1 点赞
2024-04-15
中国历史朝代顺序图
中国历史朝代顺序:
2024年04月15日
1,171 阅读
0 评论
5 点赞
2024-04-09
PHP根据经纬度计算两点距离与方圆范围方法
经常遇到根据用户当前位置来计算出与用户之间的距离,或者给用户展示方圆一公里的店铺商家之类的功能。所以在此记录一下方法。/** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return float 距离,单位米 */ function getdistance($lng1, $lat1, $lng2, $lat2) { // 将角度转为狐度 $radLat1 = deg2rad($lat1); //deg2rad()函数将角度转换为弧度 $radLat2 = deg2rad($lat2); $radLng1 = deg2rad($lng1); $radLng2 = deg2rad($lng2); $a = $radLat1 - $radLat2; $b = $radLng1 - $radLng2; $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137 * 1000; return $s; }根据经纬度获取指定方圆距离的四个点/** * 获取指定方圆距离的四个点 * param lng float 经度 * param lat float 纬度 * param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为单位米 * return array 正方形的四个点的经纬度坐标 */ function getSquarePoint($lng, $lat,$distance) { $PI = 3.14159265; $longitude = $lng; $latitude = $lat; $degree = (24901*1609)/360.0; $raidusMile = $distance; $dpmLat = 1/$degree; $radiusLat = $dpmLat*$raidusMile; $minLat = $latitude - $radiusLat; //拿到最小纬度 $maxLat = $latitude + $radiusLat; //拿到最大纬度 $mpdLng = $degree*cos($latitude * ($PI/180)); $dpmLng = 1 / $mpdLng; $radiusLng = $dpmLng*$raidusMile; $minLng = $longitude - $radiusLng; //拿到最小经度 $maxLng = $longitude + $radiusLng; //拿到最大经度 $range = array( 'minLat' => $minLat, 'maxLat' => $maxLat, 'minLon' => $minLng, 'maxLon' => $maxLng ); return $range; }
2024年04月09日
247 阅读
0 评论
2 点赞
2024-04-09
开启防盗链
很简单,直接在 nginx 里配一下就可以,不过记得添加白名单(如 logo 和 avatar),配置如下:# 资源防盗链(指定目录or指定文件类型) # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { location /upload/ { access_log off; # 域名白名单,去掉则阻止所有非本站请求 valid_referers none blocked server_names *.bbchin.com 127.0.0.1 localhost ~\.google\. ~\.baidu\. ~\.qq\.; if ($invalid_referer) { rewrite ^/ https://cdn.jsdelivr.net/gh/qinhua/cdn_assets/img/robber.jpg; } proxy_pass http://127.0.0.1:8090; }如果用到了 OSS 对象存储和 CDN,请务必在相关控制台中配置防盗链和策略
2024年04月09日
214 阅读
0 评论
1 点赞
2024-04-05
php redis 集合有序和无序的使用方法和应用场景
无序集合(Set)的使用方法和应用场景:使用方法:添加元素到集合:$redis->sAdd('myset', 'element1'); $redis->sAdd('myset', 'element2');获取集合中的所有元素:$elements = $redis->sMembers('myset');检查元素是否存在于集合中:$exists = $redis->sIsMember('myset', 'element1');从集合中移除元素:$redis->sRem('myset', 'element1');应用场景:用户标签:记录用户的兴趣、爱好等,方便进行个性化推荐或群体分析。好友列表:用于表示用户的好友关系,便于进行社交功能的实现。记录在线用户:用于快速查找当前在线的用户。去重:用于去重操作,保证数据的唯一性。有序集合(Sorted Set)的使用方法和应用场景:使用方法:添加元素到有序集合并指定分数: $redis->zAdd('mysortedset', 1, 'element1'); $redis->zAdd('mysortedset', 2, 'element2');获取有序集合中的成员数量:$size = $redis->zCard('mysortedset');获取成员的分数:$score = $redis->zScore('mysortedset', 'element1');获取指定范围内的成员:$members = $redis->zRange('mysortedset', 0, -1);应用场景:排行榜:记录用户积分、贡献值等,并根据分数进行排序。按分数范围查询:查询指定范围内的成员,如时间范围、价格范围等。记录点击量:用于统计网站的热门内容或广告的点击量。实时排名:用于实时显示排名变化,如股票排行、比赛排名等。总之,无序集合和有序集合各有自己适用的场景。无序集合适合简单的去重、集合运算等场景,而有序集合适合需要排序和范围查询的场景,如排行榜、实时统计等。
2024年04月05日
310 阅读
0 评论
1 点赞
2024-03-29
css 滚动条优化问题
假设最外层容器命名为outer,那么特定的这个区域滚动条的优化如下: .outer { width: 200px; height: 200px; border: 1px solid red; display: block; overflow-x: scroll; /* Enable scroll for the y-axis */ overflow-y: hidden; /* Disable scroll for the x-axis */ } .inner { height: max-content; /* Use max-content or a fixed height */ width: max-content; /* Use max-content or a fixed width */ } /* 整个滚动条 */ .outer::-webkit-scrollbar { width: 5px; /* 设置滚动条的宽度 */ height: 5px; /* 设置滚动条的高度 */ } /* 滚动条轨道 */ .outer::-webkit-scrollbar-track { background: #f1f1f1; /* 设置轨道的背景颜色 */ } /* 滚动条的滑块 */ .outer::-webkit-scrollbar-thumb { background: #fc9a41; /* 设置滑块的背景颜色 */ } /* 当鼠标悬停在滑块上 */ .outer::-webkit-scrollbar-thumb:hover { background: #fc9a41; /* 设置滑块在悬停状态下的背景颜色 */ } <div class="outer"> <div class="inner"> test content </div> </div>
2024年03月29日
259 阅读
0 评论
1 点赞
2023-12-12
npm install 问题:This is a problem related to network connectivity
解决办法:1. 执行如下命令 代理置为空npm config set proxy null2. 运行如下命令清理缓存npm cache clean --force3. 配置npm源npm config set registry https://registry.npmmirror.com4. 再次执行安装命令
2023年12月12日
391 阅读
0 评论
0 点赞
2023-11-30
shell清空文件内容
以下是三种不同的实现方法来清空文件内容:方法一:使用重定向符号">"来清空文件内容。> file.txt该命令将把文件file.txt的内容清空,如果文件不存在则会创建一个空文件。方法二:使用重定向符号">"和/dev/null来清空文件内容。> file.txt 2>/dev/null该命令与方法一类似,但它还将标准错误输出重定向到了/dev/null,以防止任何错误消息显示在终端上。方法三:使用echo命令和重定向符号">"来清空文件内容。echo -n > file.txt该命令通过echo命令的"-n"选项来输出一个空字符串,并将其重定向到file.txt文件,从而清空文件内容。请注意地,这种方法会在文件中留下一个空行。
2023年11月30日
285 阅读
0 评论
1 点赞
2023-11-24
Yii2 的 components 是干什么的?底层原理是什么?
在 Yii2 中,components 是用于配置和管理各种应用程序组件的关键部分。组件是 Yii2 框架中的基本构建块,可以是数据库连接、缓存、日志处理、邮件发送等。通过在配置文件中定义 components,我们可以在整个应用程序中轻松访问和使用这些组件。底层原理:组件的配置:在 Yii2 中,组件配置是以数组的形式定义在应用程序的配置文件中,通常是 config/web.php 或 config/console.php。配置文件可以定义多个组件,每个组件都有一个唯一的名称,用于在应用程序的其他部分引用和访问该组件。组件的实例化和注册:当应用程序启动时,Yii2 框架会根据配置文件中的组件定义,实例化并注册这些组件。这意味着当你访问应用程序的某个组件时,Yii2 会返回该组件的实例,并且这个实例将在整个应用程序的生命周期内保持不变,以确保组件的单例模式。组件的访问:要在 Yii2 应用程序中访问组件,可以使用 Yii::$app->componentName 的方式,其中 componentName 是在配置文件中定义的组件名称。通过这种方式,你可以在任何地方访问和使用组件的功能,而不需要重复实例化或管理组件的生命周期。组件的依赖注入:Yii2 框架还支持组件之间的依赖注入。这意味着你可以在定义一个组件时,通过 depends 属性指定该组件依赖于其他组件。这样,当实例化一个组件时,Yii2 会自动解析和注入该组件所依赖的其他组件,使组件之间的耦合度降低,代码更加灵活和可维护。示例:以下是一个简单的组件配置示例,演示了如何定义一个数据库连接组件和一个缓存组件:return [ 'components' => [ 'db' => [ // 数据库连接组件 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=mydatabase', 'username' => 'db_user', 'password' => 'db_password', 'charset' => 'utf8', ], 'cache' => [ // 缓存组件 'class' => 'yii\caching\FileCache', ], // 其他组件的配置... ], // 应用程序的其他配置... ];在上述示例中,我们定义了两个组件:db 是一个数据库连接组件,使用了 yii\db\Connection 类来表示数据库连接;cache 是一个缓存组件,使用了 yii\caching\FileCache 类来表示文件缓存。通过在代码中使用 Yii::$app->db 和 Yii::$app->cache,我们可以在整个应用程序中访问和使用这两个组件的功能。总结:components 是 Yii2 框架中用于配置和管理应用程序组件的关键部分,底层原理是通过配置文件中的数组定义来实例化和注册这些组件,并通过依赖注入实现组件之间的耦合。
2023年11月24日
225 阅读
0 评论
0 点赞
1
...
8
9
10
...
18