资讯专栏INFORMATION COLUMN

30秒的PHP代码片段(2)数学 - Math

mcterry / 2503人阅读

摘要:本文来自开源项目点我跳转秒的代码片段精选的有用片段集合,您可以在秒或更短的时间内理解这些片段。检查提供的整数是否是素数。约等于检查两个数字是否近似相等。否则,返回该范围内最近的数字。相关文章秒的代码片段数组秒的代码片段字符串函数

本文来自GitHub开源项目

点我跳转

30秒的PHP代码片段

精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段。
数学函数 average

返回两个或多个数字的平均值。

function average(...$items)
{
    $count = count($items);
    
    return $count === 0 ? 0 : array_sum($items) / $count;
}

Examples

average(1, 2, 3); // 2
factorial(阶乘)

计算一个数的阶乘。

function factorial($n)
{
    if ($n <= 1) {
        return 1;
    }

    return $n * factorial($n - 1);
}

Examples

factorial(6); // 720
fibonacci(斐波那契数列)

生成包含斐波那契数列的数组,直到第n项。

function fibonacci($n)
{
    $sequence = [0, 1];

    for ($i = 2; $i < $n; $i++) {
        $sequence[$i] = $sequence[$i-1] + $sequence[$i-2];
    }

    return $sequence;
}

Examples

fibonacci(6); // [0, 1, 1, 2, 3, 5]
GCD(最大公约数)

计算两个或多个数之间的最大公约数。

function gcd(...$numbers)
{
    if (count($numbers) > 2) {
        return array_reduce($numbers, "gcd");
    }

    $r = $numbers[0] % $numbers[1];
    return $r === 0 ? abs($numbers[1]) : gcd($numbers[1], $r);
}

Examples

gcd(8, 36); // 4
gcd(12, 8, 32); // 4
isEven

如果给定的数字是偶数,则返回true,否则返回false

function isEven($number)
{
    return ($number % 2) === 0;
}

Examples

isEven(4); // true
isPrime

检查提供的整数是否是素数。

function isPrime($number)
{
    $boundary = floor(sqrt($number));
    for ($i = 2; $i <= $boundary; $i++) {
        if ($number % $i === 0) {
            return false;
        }
    }

    return $number >= 2;
}

Examples

isPrime(3); // true
lcm

返回两个或多个数字的最小公倍数。

function lcm(...$numbers)
{
    $ans = $numbers[0];
    for ($i = 1, $max = count($numbers); $i < $max; $i++) {
        $ans = (($numbers[$i] * $ans) / gcd($numbers[$i], $ans));
    }

    return $ans;
}

Examples

lcm(12, 7); // 84
lcm(1, 3, 4, 5); // 60
median

返回数字数组的中间值。

function median($numbers)
{
    sort($numbers);
    $totalNumbers = count($numbers);
    $mid = floor($totalNumbers / 2);

    return ($totalNumbers % 2) === 0 ? ($numbers[$mid - 1] + $numbers[$mid]) / 2 : $numbers[$mid];
}

Examples

median([1, 3, 3, 6, 7, 8, 9]); // 6
median([1, 2, 3, 6, 7, 9]); // 4.5
maxN

从提供的数组中返回最大的数的个数。

function maxN($numbers)
{
    $maxValue = max($numbers);
    $maxValueArray = array_filter($numbers, function ($value) use ($maxValue) {
        return $maxValue === $value;
    });

    return count($maxValueArray);
}

Examples

maxN([1, 2, 3, 4, 5, 5]); // 2
maxN([1, 2, 3, 4, 5]); // 1
minN

从提供的数组中返回最小的数的个数。

function minN($numbers)
{
    $minValue = min($numbers);
    $minValueArray = array_filter($numbers, function ($value) use ($minValue) {
        return $minValue === $value;
    });

    return count($minValueArray);
}

Examples

minN([1, 1, 2, 3, 4, 5, 5]); // 2
minN([1, 2, 3, 4, 5]); // 1
approximatelyEqual(约等于)

检查两个数字是否近似相等。使用abs()将两个值的绝对值与进行比较。省略第三个参数,以便使用默认值0.001。

function approximatelyEqual($number1, $number2, $epsilon = 0.001)
{
    return abs($number1 - $number2) < $epsilon;
}

Examples

approximatelyEqual(10.0, 10.00001); // true
approximatelyEqual(10.0, 10.01); // false
clampNumber

num放在边界值ab指定的包含范围内。如果num在该范围内,则返回num。否则,返回该范围内最近的数字。

function clampNumber($num, $a, $b)
{
    return max(min($num, max($a, $b)), min($a, $b));
}

Examples

clampNumber(2, 3, 5); // 3
clampNumber(1, -1, -5); // -1

相关文章:
30秒的PHP代码片段(1)数组 - Array
30秒的PHP代码片段(3)字符串-String & 函数-Function

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30115.html

相关文章

  • 30秒的PHP代码片段(1)数组 - Array

    摘要:排列如果所提供的函数返回的数量等于数组中成员数量的总和,则函数返回,否则返回。平铺数组将数组降为一维数组根据给定的函数对数组的元素进行分组。使用给定的回调筛选数组。相关文章秒的代码片段数学秒的代码片段字符串函数 本文来自GitHub开源项目 点我跳转 30秒的PHP代码片段 showImg(https://segmentfault.com/img/bVbnR1I?w=2800&h=12...

    dunizb 评论0 收藏0
  • 30秒的PHP代码片段(3)字符串-String & 函数-Function

    摘要:返回给定字符串中的元音数。使用正则表达式来计算字符串中元音的数量。对字符串的第一个字母进行无头化,然后将其与字符串的其他部分相加。使用查找字符串中第一个出现的子字符串的位置。相关文章秒的代码片段数组秒的代码片段数学 本文来自GitHub开源项目 点我跳转 30秒的PHP代码片段 showImg(https://segmentfault.com/img/bVbnR1I?w=2800&h=...

    BlackMass 评论0 收藏0
  • setTimeout 或者 setInterval,关于 Javascript 计时器:你需要知道的

    摘要:所以,我们可以将理解为计时结束是执行任务的必要条件,但是不是任务是否执行的决定性因素。的意思是,必须超过毫秒后,才允许执行。 先来回答一下下面这个问题:对于 setTimeout(function() { console.log(timeout) }, 1000) 这一行代码,你从哪里可以找到 setTimeout 的源代码(同样的问题还会是你从哪里可以看到 setInterval 的...

    Warren 评论0 收藏0
  • Day18 - Reduce、Map混合使用计算时分秒

    摘要:混合使用计算时分秒本文出自从零到壹全栈部落作者黎跃春追时间的人简介是推出的一个天挑战。完整中文版指南及视频教程在从零到壹全栈部落。效果图第天挑战的内容主要是如何将一系列的加起来,最终计算总时间,总时间用时分秒显示。 Day18 - Reduce、Map混合使用计算时分秒 本文出自:从零到壹全栈部落作者:©黎跃春-追时间的人 简介:JavaScript30 是 Wes Bos 推出的一个...

    raoyi 评论0 收藏0
  • 30分钟学完】canvas动画|游戏基础(5):重力加速度与模拟摩擦力

    摘要:前言解决运动和碰撞问题后,我们为了让运动环境更加自然,需要加入一些环境因子,比如常见的重力加速度和模拟摩擦力。核心代码如下完整示例重力加速度演示模拟摩擦力科普阻碍物体相对运动或相对运动趋势的力叫做摩擦力。 前言 解决运动和碰撞问题后,我们为了让运动环境更加自然,需要加入一些环境因子,比如常见的重力加速度和模拟摩擦力。 阅读本篇前请先打好前面的基础。 本人能力有限,欢迎牛人共同讨论,...

    Caicloud 评论0 收藏0

发表评论

0条评论

mcterry

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<