内容简介:精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段。
本文来自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 放在边界值 a 和 b 指定的包含范围内。如果 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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The CS Detective: An Algorithmic Tale of Crime, Conspiracy, and
Jeremy Kubica / No Starch Press / 2016-8-15 / USD 13.74
Meet Frank Runtime. Disgraced ex-detective. Hard-boiled private eye. Search expert.When a robbery hits police headquarters, it's up to Frank Runtime and his extensive search skills to catch the culpri......一起来看看 《The CS Detective: An Algorithmic Tale of Crime, Conspiracy, and 》 这本书的介绍吧!