PHP中是否存在“钳位”数字函数?

时间:2013-07-15 21:49:48

标签: php clamp

我在PHP中编写了一个“钳制”数字的函数,但我想知道这个函数是否存在于本地语言中。

我在数学部分阅读了PHP.net文档,但我找不到它。

基本上我的函数所做的是接受变量,可能值的数组和默认值,这是我函数的签名:

function clamp_number($value, $possible_values, $default_value)

如果$value与任何$possible_values都不匹配,则默认为$default_value

我认为如果PHP已经在本机提供它,我的功能会更快,因为我在我的程序中经常使用它。

无论如何,如果这个问题不属于SO,请随时投票决定关闭它。

2 个答案:

答案 0 :(得分:26)

好像你只想在一个集合中找到一个数字。实际的钳位功能将确保一个数字在2个数字(下限和上限)之内。因此,psudo代码将clamp(55, 1, 10)生成10clamp(-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;