![](https://img-blog.csdnimg.cn/20210618133228573.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
PHP
文章平均质量分 80
掌握后端PHP编程,记录PHP后端编程生涯
ZzzWClock
有规划的人生叫蓝图,没有规划的人生叫拼图
展开
-
MYSQL:使用锁解决并发下的更新丢失问题
MYSQL使用锁解决并发下的更新丢失问题序言更新丢失是指并发下两次更新同时进行,后一次更新覆盖了前一次更新的情况,更新丢失是数据没有保证一致性导致的。举个栗子:用户A在银行卡有100元钱,某一刻用户B向A转账50元(称为B操作),同时有用户C向A转账50元(称为C操作);B操作从数据库中读取他此时的余额100,计算新的余额为100+50=150C操作也从数据库中读取他此时的余额100,计算新的余额为100+50=150B操作将balance=150写入数据库,之后C操作也将balance=1转载 2022-01-26 15:27:12 · 368 阅读 · 0 评论 -
PHP:关于PHP商城秒杀防止超卖问题
关于PHP商城秒杀防止超卖问题序言:在同样对数据操作的代码下,redis事务比lua脚本还要慢上许多,会偶尔出现1-10单超卖的现象。如果想要使用redis事务,删减库存的情况,用redis->decr递减库存,不要用程序自带的加减法,这样效果会好一些推荐使用lua脚本加redis注意redis事务与mysql的事务不一样,缺少了原子性lua+redis:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。实现思路:在设置秒杀活动的时候,把秒杀商品库存存入redis原创 2022-01-25 16:35:34 · 2022 阅读 · 0 评论 -
Redis6+PHP:实现根据经纬度计算出附近门店距离
一. 开始介绍: Redis GEO1.Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。Redis GEO操作方法geoadd添加地理位置的坐标geopos获取地理位置的坐标geodist计算两个位置之间的距离georadius根据用户给定的经纬度坐标来获取指定范围内的地理位置集合georadiusbymember根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合geoha原创 2021-10-20 16:26:07 · 1692 阅读 · 0 评论 -
PHP+Workerman即时通讯技术:在线聊天/客服/访客功能
PHP+Workerman即时通讯技术:在线聊天/客服/访客功能1:客服端2:客户端3:多访客4:聊天表情客服端http://videolaravel.zwzgjl.com/index.php/admin/login账号:kefu001密码: a123456客户端http://videolaravel.zwzgjl.com/Workerman/index访客无需账号/密码ps:先登录客服 在登陆访客 有任何bug可以发送邮件至:gz341500@163.com 周末更新!原创 2021-10-20 14:47:33 · 640 阅读 · 7 评论 -
Git:【Git】基础常用命令,【Linux】常用命令
Git:【Git】基础常用命令,【Linux】常用命令一.【Linux】常用命令目录操作命令命令cd目录cd /切换到根目录cd /usr切换到根目录下的usr目录cd …/切换到上一级目录 或者 cd …cd ~切换到home目录cd -切换到上次访问的目录目录查看命令ll目录查看ls查看当前目录下的所有目录和文件ls -a查看当前目录下的所有目录和文件(包括隐藏的文件)ls -l 或 ll原创 2021-10-19 17:47:17 · 217 阅读 · 0 评论 -
PHP:【商城后台管理系统】部署友情链接,网站基础设置
PHP:【商城后台管理系统】部署友情链接,网站基础设置一.友情链接①友情链接页面②友情链接编辑③友情链接添加二.网站基础设置①后台网站基础设置页面②网站基础设置效果三.部署流程部署流程后端采用thinkphp6.0,首先是网站基础设置,网站基础在数据库中可以建立一个单独的表,但是这个单独的表存放的信息很特殊,表里可以存商品规格,或者别的数据,因为这个网站设置就是设置网站的tdk,表字段的名称是这样的,id,names,values,就只有这两个字段,names的字段可以原创 2021-10-19 17:46:42 · 687 阅读 · 0 评论 -
PHP:【商城后台管理系统】部署角色管理,角色添加,菜单权限,删除角色功能
PHP:【商城后台管理系统】部署角色管理,角色添加,菜单权限,删除角色功能一.角色管理界面①首页②角色添加③角色编辑④角色删除二.部署流程部署流程后端采用thinkphp6.0框架,角色管理看似简单,但是在菜单权限这一块是很难得,为什么难呢?因为要设计菜单无限级构造树,还要将无限极菜单构造树递归遍历成二级菜单,这样才好将菜单渲染到视图层,在代码块注释中将有这些问题的解决方案。前端采用Layui框架HTML 代码块<!DOCTYPE html><原创 2021-10-18 11:51:01 · 2362 阅读 · 6 评论 -
PHP:【商城后台管理系统】部署管理员一级菜单和二级菜单列表添加功能
PHP:【商城后台管理系统】部署管理员一级菜单和二级菜单列表添加功能一.1级菜单和2级菜单列表添加页面一级菜单二级菜单二.部署流程数据库后台菜单列表,字段设置,pid 是 菜单列表级别,0代表1级菜单,>0的是二级菜单,并且二级菜单pid字段值需要对应mid字段值,这样才可以相互绑定。每个菜单对应的还有Controller控制器,action方法,都要一一记录,这样才能映射到thinkphp控制器层还有视图层,用来区分每一级菜单的前端视图框架采用ThinkPHP6.0原创 2021-10-18 11:50:06 · 1667 阅读 · 0 评论 -
PHP:【商城后台管理系统】部署管理员列表,添加/编辑/删除功能
PHP:【商城后台管理系统】部署管理员列表,添加/编辑/删除功能请点击->友情连接在线测试后台管理页面一.管理员列表界面二.部署流程部署流程thinkphp:使用thinkphp6.0 ,在数据库表里每个管理员都有相对应的id字段,我们点击编辑的时候,会自动获取管理员id字段,进行判断点击的是哪个管理员,当我们修改信息的时候,会判断所填的信息是否为空,如果不为空则添加或修改成功,会默认给一个修改和添加时间,删除就是判断当前点击的管理员字段id,进行where条件查找,然后进行删原创 2021-10-18 11:48:01 · 1315 阅读 · 1 评论 -
PHP:【商城后台管理系统】部署管理员未登录拦截,进行重定向
PHP:【商城后台管理系统】部署管理员未登录拦截,进行重定向一.未登录拦截界面二.部署流程部署流程thinkphp:使用thinkphp6.0 BaseController 里面的初始化控件进行重定向拦截,我们在管理员登陆成功后会进行存储session,然后我们进行判断session里面是否有用户的存储信息,如果没有则进行重定向到登录页面,如果有用户信息则返回json格式给前端HTML 代码块exit('<!doctype html> <h原创 2021-10-15 09:46:39 · 281 阅读 · 0 评论 -
PHP:【商城后台管理系统】admin超级管理员后台登录界面部署
PHP:【商城后台管理系统】admin超级管理员后台登录界面部署一.后台管理登录非空验证二.后台管理登录用户信息验证三.注意事项需要注意储存用户password的时候需要进行加密存储password的时候 优先选择password_hash 比 md5 更安全如果使用md5 加密 请加严处理HTML 代码块<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /原创 2021-10-15 09:45:20 · 3067 阅读 · 1 评论 -
PHP:【微信小程序】微信小程序API,微信小程序路由,微信小程序作用域,微信小程序网络通讯
PHP:【微信小程序】微信小程序API,微信小程序路由,微信小程序作用域,微信小程序网络通讯一.微信 API1.什么是 API小程序开发框架提供丰富的微信原生API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等小程序提供的API按照功能主要分为几大类:网络、媒体、文件、数据缓存、位置、设备、界面、界面节点信息还有一些特殊的开放接口2.事件监听 API以 on 开头的 API 用来监听某个事件是否触发这类 API 接受一个回调函数作为参数,当事件触发时会调用这个回原创 2021-10-14 11:59:33 · 330 阅读 · 0 评论 -
PHP:【微信小程序】微信小程序部分组件,微信小程序轮播图
PHP:【微信小程序】微信小程序部分组件,微信小程序轮播图一.组件1.视图容器编号名称功能说明1cover-image覆盖在原生组件之上的图片视图2cover-view覆盖在原生组件之上的文本视图3match-mediamedia query 匹配检测节点4movable-areamovable-view 的可移动区域5movable-view可移动的视图容器,在页面中可以拖拽滑动6page-container页面容器原创 2021-10-14 11:23:26 · 234 阅读 · 0 评论 -
PHP:【微信小程序】微信小程序数据交互,微信小程序判断/循环,微信小程序事件
PHP:【微信小程序】微信小程序数据交互,微信小程序判断/循环,微信小程序事件一.交互1.data 数据data 是页面第一次渲染使用的初始数据页面加载时,data 将会以 JSON 字符串的形式由逻辑层传至渲染层渲染层可以通过 WXML 对数据进行绑定WXML 通过 {{ 变量名 }} 语法可以使得 WXML 拥有动态渲染的能力,除此外还可以在 {{ }} 内进行简单的逻辑运算2.js 获取 data 数据this 调用本文件的方法和参数3.js 修改 dat原创 2021-10-14 11:22:20 · 269 阅读 · 0 评论 -
PHP:【微信小程序】初识微信小程序,微信小程序配置
PHP:【微信小程序】初识微信小程序,微信小程序配置一.介绍小程序提供了一个简单、高效的应用开发框架和丰富的组件及 API,帮助开发者在微信中开发具有原生 APP 体验的服务小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验二.速读微信小程序是腾讯公司旗下微信小程序只能在微信里打开微信小程序代码构成:WXML(html),WXSS(css),JS,JSON微信小程序文件构成:.json后缀 JSON 配置文件.wxm原创 2021-10-14 11:21:27 · 493 阅读 · 0 评论 -
PHP:【ThinkPHP】=> 通用后台管理,用户名,头像,判断是否为空
PHP:【ThinkPHP】=> 通用后台管理,用户名,头像,判断是否为空HTML 代码块 //图片上传 js方法 function save(){ $.post("{$config['admin_route']}Jz/user_add",$('form').serialize(),function(res){ switch (res.id) { case 0: layer.msg(res.msg,{'icon':2}); b原创 2021-10-13 14:14:42 · 197 阅读 · 0 评论 -
PHP:【ThinkPHP】=>Model配置;ThinkPHP路由/路由分组;创建多项目
PHP:【ThinkPHP】=>Model配置;ThinkPHP路由/路由分组;创建多项目一.Model 模型请确保你已经在数据库配置文件中配置了数据库连接信息模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写模型自动对应的数据表名称都是遵循小写+下划线规范,如果你的表名有大写的情况,必须通过设置模型的 table 属性。创建 model 文件:app/Model/Boke.phpcontroller 调用 model①Th原创 2021-10-13 14:13:32 · 343 阅读 · 0 评论 -
PHP:【ThinkPHP】=>数据库表达式:普通查询、表达式查询、快捷查询、区间查询、组合查询;原生mysql查询;事务操作 ;翻页功能
PHP:【ThinkPHP】=>数据库表达式:普通查询、表达式查询、快捷查询、区间查询、组合查询;原生mysql查询;事务操作 ;翻页功能一.数据库表达式表达式是 SQL 语句的条件表达式不分大小写表达式写在 where 里表达式含义查询方法=等于<>不等于>大于>=大于等于<小于<=小于等于[NOT] LIKE模糊查询whereLike/whereNotLike原创 2021-10-13 12:03:56 · 381 阅读 · 0 评论 -
PHP:【ThinkPHP】=>视图的XML 标签;请求Request类; 数据库链式操作 ;[博客实战]分类和搜索功能完成;
PHP:【ThinkPHP】=>视图的XML 标签;请求Request类; 数据库链式操作 ;[博客实战]分类和搜索功能完成;一.视图标签模板引擎支持普通标签和 XML 标签方式两种标签定义标签类型描述普通标签主要用于输出变量、函数过滤和做一些基本的运算操作XML 标签也称为标签库标签,主要完成一些逻辑判断、控制和循环输出,并且可扩展①普通标签 主要用于输出变量、函数过滤和做一些基本的运算操作运算符运算符示例+{$a+$b}原创 2021-10-13 12:03:25 · 409 阅读 · 0 评论 -
PHP:【ThinkPHP】=>下载、安装、运行Thinkphp6 /安装view /写增删查改语句
PHP:【ThinkPHP】=>下载、安装、运行Thinkphp6 /安装view /写增删查改语句一.下载、安装、运行Thinkphp6 /安装viewThinkPHP6 安装ThinkPHP6.0 的环境要求如下:PHP >= 7.1.0Thinkphp6 开始,必须通过 Composer 方式安装和更新安装 Composer下载并运行(Window 环境) Composer-Setup.exe安装 Thinkphp6先切换到你的 php 环境根目录d:cd p原创 2021-10-13 12:02:36 · 1078 阅读 · 0 评论 -
PHP:【实战】用composer自撸框架
PHP:【实战】用composer自撸框架自撸 PHP 发开框架1.架构M :MODEL, 使用第三方包实现V :VIEW, 使用第三方包实现C :CONTROLLER :业务逻辑是写在控制器中2.第三方包Model : composer require catfan/medooView : composer require league/plates流程创建自己的框架核心代码,MODEL, VIEW,分别继承第三方的包创建自己的应用, 按MVC架构模原创 2021-10-13 12:02:01 · 329 阅读 · 0 评论 -
PHP:composer自动加载机制;创建动态分页; 使用三方验证码库;
PHP:composer自动加载机制;创建动态分页; 使用三方验证码库;一.使用第三方验证码库http://packagist.p2hp.com/packages/gregwar/captcha 可以用composer下载第三方验证码库下载好之后创建html页面加载第三方验证码库包,开启session会话和用户输入的验证码做对比是否正确。代码块<?php//首先开启session会话session_start();//然后引入第三方验证码的自动加载文件require_once原创 2021-10-08 16:27:58 · 247 阅读 · 0 评论 -
PHP:使用curl请求聚合支付的驾考宝典题库接口数据, 并渲染到页面上;composer 常用的指令;mvc pathinfo 路由映射实现
PHP:使用curl请求聚合支付的驾考宝典题库接口数据, 并渲染到页面上;composer 常用的指令;mvc pathinfo 路由映射实现一. API 基础知识url 的相关知识1.1 一切皆"请求"常见的请求场景如下:搜索引擎查询信息商城通过物流接口获取快递状态微信通过支付回调 URL 通知用户支付情况调用运营商接口发送短信调用天气信息展示在 APP 或网站上调用百度 REST API 接口实现文字转语音,实现支付语音提示调用百度图片审核接口过滤非法色情图片调用地图接原创 2021-10-08 16:27:00 · 572 阅读 · 0 评论 -
PHP:MVC之间的关系 ,容器与依赖注入,facade门面技术
PHP:MVC之间的关系 ,容器与依赖注入,facade门面技术MVC (一种架构模式)M: Model(模型层),最bottom一层,是核心数据层,程序需要操作的数据或信息.V:View (视图层),最top一层,直接面向最终用户,视图层提供操作页面给用户,被誉为程序的外壳.C: Controller(控制层),是middile层, 它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。仿站: V - M - C自主: M -原创 2021-10-08 16:26:23 · 224 阅读 · 0 评论 -
PHP:文件上传上传限制,文件大小不超过5M,文件后缀设置,检查图片合法性,每一张图片处理散列名称,目标目录不存在,创建目录,设置错误日志接收系统错误
PHP:封装文件上传函数php 关于文件上传的配置文件上传项目项在php.ini中设置,常用的配置项有:序号配置项默认值描述1file_uploadsOn使 PHP 支持文件上传2upload_tmp_dir/tmp指示应该临时把上传的文件存储在什么位置3max_file_uploads20单次请求时允许上传的最大文件数量4max_execution_time30设置脚本被解析器终止之前PHP最长执行时间(秒) ,防止服务器资源原创 2021-10-08 16:25:47 · 1453 阅读 · 0 评论 -
PHP:PDO->fetch()和fetchAll()遍历,session进行会话跟踪,用户退出清除session
PHP:PDO->fetch和fetchAll遍历,session进行会话跟踪,用户退出清除session一.fetch()和fetchAll()遍历①fetch()遍历fetch 采用while循环进行数组遍历代码块<?php//引入服务器连接require "/xp/phpstudy_pro/WWW/www.zwz.com/zwz/0512/config/PDO.php";//访问数据表中数据$sql = "SELECT `id` ,`uname`,`pwd` FR原创 2021-10-08 16:25:18 · 842 阅读 · 0 评论 -
PHP:PDO预处理机制在防SQL注入的作用/PDO CURD预处理/PDO预处理中bindValue与bindParam的不同之处
PHP:PDO预处理机制在防SQL注入的作用/PDO CURD预处理/PDO预处理中bindValue与bindParam的不同之处一.PDO预处理机制在防SQL注入的作用pdo预处理机制 防止sql注入pdo使用 ?参数占位符 或者 命名占位符 :name需要使用到的方法含义prepare()准备一条将要执行的预处理语句 返回的是pdo statement 对象bindParam()绑定一个参数到指定的变量名execute()执行一条预处理语句①未原创 2021-10-07 21:31:50 · 488 阅读 · 0 评论 -
PHP:MySQL常用DDL数据定义语言, DML数据库操作语言,PDO连接数据库操作
PHP:MySQL常用DDL数据定义语言, DML数据库操作语言,pdo操作数据库的对象方法一.常用DML数据库操作语言SQL语句语法规范常用MySQL的关键字我们需要大写,库名、表名、字段名称等使用小写SQL语句支持折行操作,拆分的时候不能把完整单词拆开数据库名称、表名称、字段名称不要使用MySQL的保留字,如果必须要使用,需要用反引号``将其括起来命令含义MySQL -uroot -ppassword登入数据库,-u账号,-p密码exit退出数据库SE原创 2021-10-07 21:31:15 · 193 阅读 · 0 评论 -
PHP:oop->细说命名空间/命名空间类的自动加载
PHP:oop->细说命名空间/命名空间类的自动加载一.命名空间命名空间:namespace 有名称的空间namespace 需要写在脚本的顶部,必须是php的第一条指令(除了declare指令)全局成员: 常量,函数,类(接口),默认声明在全局空间中的优点:全局调用缺点:不能重复命名php5.3以后引入C Java中应用成熟的命名空间use 在命名空间中的作用/导入命名空间use app\admin\controller as app;引入别的原创 2021-10-07 21:30:32 · 140 阅读 · 0 评论 -
PHP:oop->重载之set/get/call/callStatic,oop事件委托,数据库查询构造器
PHP:oop->重载之set/get/call/callStatic,oop事件委托,数据库查询构造器魔术方法含义__set()__set(name,value),第一个值是成员属性名称,第二个值是成员属性值__get()__get(name),第一个值是成员名称或者成员属性值php重载 PHP所提供的重载(overloading)是指动态地创建类属性和方法。我们是通过魔术方法(magic methods)来实现的。当调用当前环境下未定义或不可见的类属原创 2021-10-07 21:29:29 · 118 阅读 · 0 评论 -
PHP:oop->抽象类/接口/后期静态绑定/单例模式连接数据库 Db类中数据库增删改查方法
PHP:oop->抽象类/接口/后期静态绑定/单例模式连接数据库 Db类中数据库增删改查方法一.抽象类接口里面的方法都是没有实现的,而类里面的方法都是有实现的. 有没有一种形态,允许类里面一部分方法不实现呢?当接口中的某些方法对于所有的实现类都是一样的实现方法,只有部分方法需要用到多态的特性如人和动物吃东西是不同的,但是呼吸是相同的,不需要为人和动物分别实现呼吸的功能abstract关键字用于定义抽象类在抽象方法前面添加abstract关键字可以标明这个方法是抽象方法不需要原创 2021-10-07 21:28:55 · 181 阅读 · 0 评论 -
PHP:OOP基础/类(对象抽象化的结果)与对象 (类实例化结果)/构造方法/对象成员之间的内部访问/类的自动加载/静态成员的访问 类的引用/类的继承 扩展 父类方法
OOP基础/类(对象抽象化的结果)与对象 (类实例化结果)/构造方法/对象成员之间的内部访问/类的自动加载/静态成员的访问 类的引用/类的继承 扩展 父类方法一. 类(对象抽象化的结果)与对象 (类实例化结果)属性含义class类声明new类实例化public公开成员,随处可见protected受保护成员,仅在当前类或子类中可见private私有成员, 仅在当前类可见spl_autoload_register()自动加载器extends原创 2021-10-07 21:28:16 · 108 阅读 · 0 评论 -
PHP:字符串系统函数,ASCII字符集转换,url解析函数,字符串散列处理
PHP:字符串系统函数,ASCII字符集转换,url解析函数,字符串散列处理一.字符串系统函数字符串系统函数含义strlen(string $string)获取字符长度mt_rand( int $min , int $max)生成随机数strcmp(string1,string1,string1,string2)比较两个字符串的大小,严格区分大小写strcasecmp(string1,string1,string1,string2)忽略大小写的比较字符串的大原创 2021-10-07 21:26:35 · 145 阅读 · 0 评论 -
PHP:回调函数/递归函数/数组函数/二维数组里的键值name换成user ,生成一个由1-100组成的数组,返回该数组中的偶数组成的新数组,并且新数组的索引从0开始
PHP:回调函数/递归函数/数组函数/二维数组里的键值name换成user ,生成一个由1-100组成的数组,返回该数组中的偶数组成的新数组,并且新数组的索引从0开始一.回调函数/异步函数回调方法回调函数 :将一个用户自定的"执行过程"当做参数传递给到函数中,大大滴增大了对该函数功能的扩展回调函数: 就是一个被作为参数传递的函数,php回调函数是指在主线程执行的过程中,突然跳去执行设置的回调函数,回调函数执行结束后, 再回到主线程处理接下来的流程方法含义call_user_f原创 2021-10-07 21:25:59 · 441 阅读 · 0 评论 -
PHP:函数的返回值和参数,实例回调函数,匿名函数的理解
PHP:函数的返回值和参数,实例回调函数,匿名函数的理解一.PHP函数/** * 函数:完成特定功能的代码块~ 函数:属于全局成员 全局可访问 * * function 函数名称([ 参数类型限定 参数列表]) :返回值类型限定 * { * 函数体 * return 返回值; * 1. 函数只能返回单个值,返回值的数据类型可以是任意类型 * 2. 函数碰到return语句,立即结束程序执行,return后面的代码不原创 2021-10-07 21:25:10 · 1807 阅读 · 0 评论 -
PHP:使用定界符输出九格宫表格,颜色各异,每个小格子宽高50px ,用php实现具有简单功能的计算器
PHP:使用定界符输出九格宫表格,颜色各异,每个小格子宽高50px 用php实现具有简单功能的计算器一.使用定界符输出九格宫表格,颜色各异,每个小格子宽高50px代码块<?php//输出颜色不一样的九宫格//随机颜色for ($i=0; $i <3 ; $i++){ $td=""; for ($a=0; $a < 3; $a++){ $r = mt_rand(0,255); $g = mt_rand(0,255);原创 2021-06-29 12:37:22 · 260 阅读 · 1 评论 -
PHP:变量的类型转换方式,变量值传递与值引用的区别,变量作用域和魔术常量
PHP:变量的类型转换方式,变量值传递与值引用的区别,变量作用域,魔术常量一.变量/常量命名①变量命名仅允许使用: 英文字母(a-z,A-Z),数字(0-9),下划线(\_)或他们的组合不允许使用数字开头必须使用"$"美元符为前缀严格区分大小写驼峰命名法②常量命名define(): 函数const: 关键字作为前缀通常,常量都用大写字母表示二.变量的类型转换方式转换方式函数临时转换(int),(string),(array),(object)…自原创 2021-06-29 12:36:52 · 129 阅读 · 0 评论 -
PHP:实例演示PHP模块加载和JavaScript和PHP中for/forEach两种语言不一样遍历数组的区别
PHP:实例演示JavaScript和PHP中for/forEach两种语言不一样遍历数组的区别一.JavaScript:for和forEach遍历数组①for循环遍历数组②forEach遍历数组代码块<script> let box = document.querySelector(".box"); //建立一个数组 let arr = ["宝马", "奔驰", "奥迪", "雷克萨斯"]; //用forEach遍历数组原创 2021-06-29 12:36:17 · 85 阅读 · 0 评论