当前位置: 首页 > news >正文

PHP 8.6 新增 clamp() 函数

PHP 8.6 的 clamp() 函数可以把一个值限制在指定的最小值与最大值之间。

它的签名如下:

clamp(mixed $value, mixed $min, mixed $max): mixed

clamp() 接收三个参数:$value、$min、$max,然后判断 $value 是否在 $min 与 $max(包含边界)之间。

小于最小值:如果 $value 小于 $min,返回 $min。

大于最大值:如果 $value 大于 $max,返回 $max。

在范围内:如果 $value 位于 $min 与 $max 之间,返回 $value。

异常情况:如果 min > max,或者 min/max 为 NAN,会抛出 ValueError。

下面是一个最简单的示例:

$value1 = clamp(15, 10, 20); // 返回 15

$value2 = clamp(5, 10, 20); // 返回 10

$value3 = clamp(25, 10, 20); // 返回 20

小趣闻:很久以前我就写过一个自定义的 clamp 函数,当作项目里的工具函数来用。

使用命名参数的 clamp()

clamp() 配合命名参数会更直观,而且还能重新排序参数。

$brightness = clamp(min: 0, value: $brightness, max: 100);

真实场景用法

下面是一些 clamp() 的实用场景。

用户输入:把百分比限制在 0 到 100

$percentage = clamp($percentage, 0, 100);

UI 滑块:把音量限制在 0 到 10

$volume = clamp($volume, 0, 10);

分页:把页码限制在第一页与最后一页之间

$page = clamp((int)$_GET['page'] ?? 1, 1, $totalPages);

限流:避免突发请求数超过上限

$requests = clamp($requests, 0, $maxBurst);

日期:确保预订日期在允许窗口内

$date = new DateTimeImmutable($input);

$start = new DateTimeImmutable('2025-08-15');

$end = new DateTimeImmutable('2025-09-15');

$clamped = clamp($date, $start, $end); // 会按情况返回 start/end/date

几何:把角度限制在 0 到 90

$angle = clamp($angle, 0, 90);

字符串(按字典序):把标签限制在 “c” 到 “g”

$tag = clamp($tag, "c", "g");

总结

PHP 8.6 的 clamp() 函数虽然简单,但非常实用:它能帮你用一种更干净、清晰的方式对值进行边界约束。

无论你在处理用户输入、配置、UI 参数,还是任何需要把值限制在某个区间的场景,clamp() 都能让代码更直观。

想了解更多,可以阅读关于 clamp() 的 RFC。

http://www.cnnetsun.cn/news/62214.html

相关文章:

  • 15 分钟获现场信号,30 分钟建指挥链路!分布式系统赋能救援 “秒响应”
  • 自动化测试中的常见陷阱与规避
  • 6-4 WPS JS宏 不重复随机取值应用
  • 《余行论》第七篇:历史篇
  • 《余行论》第九篇:证验篇
  • 构建动态响应式动画架构:lottie-ios与现代数据流技术融合实践
  • 起薪 15K+!网安领跑 2025IT 转行 6 大榜,政策红利 + 百万缺口,路径直接抄
  • 小程序商城搭建 自带拼团砍价功能 快速引爆销量
  • 海外网红营销:超越促销,用“圣诞故事”绑定品牌情感
  • Qwen3-32B双模式大模型:重构企业AI效率的范式革命
  • 9、深入探索AppStack:创建、分配、测试与管理全流程
  • 12、ThinApp与App Volumes结合应用及Horizon View集成指南
  • 16、在 Citrix XenApp 环境中部署 App Volumes
  • 国开(铸造学院开放大学)25秋《生产与运作管理》形考任务1【标准答案】
  • DETR 2025新突破:从农业到工业的实时检测革命
  • 深度学习优化参数深度解析:揭秘学习率调度的实战指南
  • 不写一行代码,把大模型变成安全编码专家 | LLaMA-Factory 微调实战
  • Vue2 - VDOM 和双端Diff算法
  • 40、Sendmail 配置与规则详解
  • 44、网络新闻:Usenet与C News深度剖析
  • 46、C News系统使用与维护全解析
  • OptiScaler游戏画质优化工具深度解析
  • 16、Yocto项目开发工具与流程详解
  • 25、深入解析Linux相关技术:从CGL到汽车级Linux
  • Nature同款 | 跟着顶刊学配色第 26 期
  • Gin框架架构详解:高性能Go语言Web框架的设计哲学与实践
  • 【OpenHarmony】轻量级公共基础库commonlibrary_utils_lite
  • 41、Linux系统深入解析与操作指南
  • SSM小型餐饮综合管理系统j1c7m(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • 2025年计算机类专业的就业分析