-
PHP中排序数组需根据类型选择函数:1.sort()对索引数组按值升序排序;2.ksort()按键排序关联数组;3.rsort()和arsort()分别对索引和关联数组按值降序排序;4.usort()配合自定义比较函数实现灵活排序,如按学生分数降序排列;所有sort系列函数均修改原数组,输出时需注意键值对应关系,必要时应先复制数组。
-
Gamma校正是调整图像亮度以补偿显示器非线性响应的技术,PHP中通过imagegammacorrect()函数实现,需传入图像资源、输入Gamma和输出Gamma值,常用于将Gamma1.0图像校正为2.2以适配标准显示器,提升视觉一致性,但仅对真彩色图像有效且需避免过度校正导致失真。
-
必须在服务启动前调用Swoole\Runtime::enableCoroutine(true),否则sleep()、file_get_contents()等操作会阻塞整个Worker进程;该调用需置于newSwoole\Http\Server之前,CLI脚本开头最稳妥。
-
phpenv本身不安装PHP,仅负责版本调度;需配合php-build插件实现编译安装,且必须预先配置系统依赖、正确设置shell环境变量并执行phpenvrehash生成shims,否则phpenvinstall命令不可用或切换版本无效。
-
PHP静态化首选ob_start()+file_put_contents(),需顶部调用、绝对路径、检查可写;cURL适合依赖服务器环境的页面;Sculpin仅适用于Markdown文档站,不推荐替代动态逻辑。
-
PHP无法直接调节音频音量,仅能通过输出配置或接口数据供前端JavaScript使用Audio.volume属性(0.0–1.0)控制,微信/钉钉WebView中该属性常被忽略,需提示用户使用物理音量键,并由PHP持久化用户偏好。
-
需在任务执行前后采集时间戳并归类统计耗时分布,方法包括:一、自定义队列中间件记录起止时间并用Redis按区间频次统计;二、重写任务handle方法手动计时并写入数据库日志;三、利用Horizon事件监听TaskProcessed提取started_at/finished_at计算毫秒耗时;四、通过基类__destruct统一写入数据库日志表后SQL分桶分析。
-
可采用四种方法实现布隆过滤器:一、手动用位图+多哈希函数;二、基于RedisBloom模块的分布式实现;三、使用bloom-filter-phpComposer包;四、利用GMP扩展优化超大位图。
-
mysql.user表损坏不能用REPAIRTABLE修复,因其为InnoDB引擎且属系统库;须停服后执行--initialize-insecure重建权限表,再重设root密码并验证plugin、字符集及host匹配性。
-
XAMPP自带的PHPUnit3.x不兼容PHP8+和Composer项目,因其不支持命名空间、@dataProvider等现代语法,且易与vendor/autoload.php冲突;应改用Composer在项目内安装并配置phpunit.xml的bootstrap。
-
Webman接入微信支付的核心难点是证书加载、签名验证和回调验签;需正确配置证书路径与权限、手动透传带连字符请求头、使用原始请求体验签,并通过webman-admin动态管理敏感配置。
-
Laravel升级必须逐主版本迭代(如9→10→11),不可跨版本直升;需严格匹配PHP版本(如v11要求^8.2)、同步更新所有laravel/*生态包、手动处理结构变更(如目录移除、中间件重构)及废弃API(如Response::json())。
-
phpEnv不提供图片自动压缩功能,需通过PHP代码(如imagejpeg)或NginxWebP自适应配置实现;JPEG质量设75~80,PNG无透明通道时转JPEG更省空间,WebP需客户端支持检测及同名同路径文件配合。
-
必须用DECIMAL类型存储小数,因FLOAT/DOUBLE存在二进制浮点精度误差;PHP读取时应保持字符串或启用原生类型,避免强转float或使用number_format再入库,计算须用BCMath。
-
PHP8.1中仅设CURLOPT_PROXY不够,因cURL默认按HTTP代理处理;必须显式设置CURLOPT_PROXYTYPE为CURLPROXY_SOCKS5或CURLPROXY_SOCKS5_HOSTNAME才能正确走SOCKS5协议。