我在PHP中编写了一个“钳制”数字的函数,但我想知道这个函数是否存在于本地语言中。
我在数学部分阅读了PHP.net文档,但我找不到它。
基本上我的函数所做的是接受变量,可能值的数组和默认值,这是我函数的签名:
function clamp_number($value, $possible_values, $default_value)
如果$value
与任何$possible_values
都不匹配,则默认为$default_value
我认为如果PHP已经在本机提供它,我的功能会更快,因为我在我的程序中经常使用它。
无论如何,如果这个问题不属于SO,请随时投票决定关闭它。
答案 0 :(得分:26)
好像你只想在一个集合中找到一个数字。实际的钳位功能将确保一个数字在2个数字(下限和上限)之内。因此,psudo代码将clamp(55, 1, 10)
生成10
而clamp(-15, 1, 10)
将生成1
clamp(7, 1, 10)
将生成7
。我知道你正在寻找更多的in_array
方法,但对于那些从谷歌来到这里的人来说,这里是你如何在不创建函数的情况下使用PHP(或将其转换为函数)。
max($min, min($max, $current))
例如:
$min = 1;
$max = 10;
$current = 55;
$clamped = max($min, min($max, $current));
// $clamped is now == 10
一种简单的钳制方法是:
function clamp($current, $min, $max) {
return max($min, min($max, $current));
}
答案 1 :(得分:6)
$value = in_array($value, $possible_values) ? $value : $default_value;