博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
30秒的PHP代码片段(2)数学 - Math
阅读量:6159 次
发布时间:2019-06-21

本文共 2999 字,大约阅读时间需要 9 分钟。

本文来自GitHub开源项目

30秒的PHP代码片段

clipboard.png

精选的有用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); // 4gcd(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); // 84lcm(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]); // 6median([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]); // 2maxN([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]); // 2minN([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); // trueapproximatelyEqual(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); // 3clampNumber(1, -1, -5); // -1

相关文章:

转载地址:http://dfofa.baihongyu.com/

你可能感兴趣的文章
AutoReleasePool 和 ARC 以及Garbage Collection
查看>>
重新想象 Windows 8 Store Apps (9) - 控件之 ScrollViewer 基础
查看>>
乐在其中设计模式(C#) - 提供者模式(Provider Pattern)
查看>>
MVP Community Camp 社区大课堂
查看>>
GWT用frame调用JSP
查看>>
大型高性能ASP.NET系统架构设计
查看>>
insert select带来的问题
查看>>
EasyUI 添加tab页(iframe方式)
查看>>
mysqldump主要参数探究
查看>>
好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题...
查看>>
使用addChildViewController手动控制UIViewController的切换
查看>>
Android Fragment应用实战
查看>>
SQL Server查询死锁并KILL
查看>>
内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
查看>>
委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
查看>>
apache 伪静态 .htaccess
查看>>
unity3d 截屏
查看>>
ASP.NET MVC学习之控制器篇
查看>>
MongoDB ServerStatus返回信息
查看>>
分析jQuery源码时记录的一点感悟
查看>>