Кураторская подборка полезных фрагментов PHP-кода, которые можно понять за 30 секунд или меньше.
Примечание: Этот проект вдохновлён 30 Seconds of Code, но не связан с этим проектом.
Возвращает true
, если предоставленная функция возвращает true
для всех элементов массива, в противном случае — false
.
function all($items, $func)
{
return count(array_filter($items, $func)) === count($items);
}
all([2, 3, 4, 5], function ($item) {
return $item > 1;
}); // true
Возвращает true
, если предоставленная функция возвращает true
хотя бы для одного элемента массива, в противном случае — false
.
function any($items, $func)
{
return count(array_filter($items, $func)) > 0;
}
any([1, 2, 3, 4], function ($item) {
return $item < 2;
}); // true
Разбивает массив на меньшие массивы указанного размера.
function chunk($items, $size)
{
return array_chunk($items, $size);
}
chunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
Глубоко выравнивает массив.
function deepFlatten($items)
{
$result = [];
foreach ($items as $item) {
if (!is_array($item)) {
$result[] = $item;
} else {
$result = array_merge($result, deepFlatten($item));
}
}
return $result;
}
deepFlatten([1, [2], [[3], 4], 5]); // [1, 2, 3, 4, 5]
Возвращает новый массив, из которого удалены n
элементов слева.
function drop($items, $n = 1)
{
return array_slice($items, $n);
}
drop([1, 2, 3]); // [2,3]
drop([1, 2, 3], 2); // [3]
Возвращает последний элемент, для которого предоставленная функция возвращает правдивое значение.
function findLast($items, $func)
{
$filteredItems = array_filter($items, $func);
return array_pop($filteredItems);
}
findLast([1, 2, 3, 4], function ($n) {
return ($n % 2) === 1;
});
// 3
⬆ Вернуться к началу tail
Возвращает все элементы массива, кроме первого.
function tail($items)
{
return count($items) > 1 ? array_slice($items, 1) : $items;
}
Пример:
tail([1, 2, 3]); // [2, 3]
take
Возвращает массив с n элементами, удалёнными из начала.
function take($items, $n = 1)
{
return array_slice($items, 0, $n);
}
Пример:
take([1, 2, 3], 5); // [1, 2, 3]
take([1, 2, 3, 4, 5], 2); // [1, 2]
without
Отфильтровывает элементы массива, которые имеют одно из указанных значений.
function without($items, ...$params)
{
return array_values(array_diff($items, $params));
}
Пример:
without([2, 1, 2, 3], 1, 2); // [3]
orderBy
Сортирует коллекцию массивов или объектов по ключу.
function orderBy($items, $attr, $order)
{
$sortedItems = [];
foreach ($items as $item) {
$key = is_object($item) ? $item->{$attr} : $item[$attr];
$sortedItems[$key] = $item;
}
if ($order === 'desc') {
krsort($sortedItems);
} else {
ksort($sortedItems);
}
return array_values($sortedItems);
}
Пример:
orderBy(
[
['id' => 2, 'name' => 'Joy'],
['id' => 3, 'name' => 'Khaja'],
['id' => 1, 'name' => 'Raja']
],
'id',
'desc'
); // [['id' => 3, 'name' => 'Khaja'], ['id' => 2, 'name' => 'Joy'], ['id' => 1, 'name' = 'Raja']]
average
Возвращает среднее значение двух или более чисел.
function average(...$items)
{
return count($items) === 0 ? 0 : array_sum($items) / count($items);
}
Пример:
average(1, 2, 3); // 2
factorial
Вычисляет факториал числа.
function factorial($n)
{
if ($n <= 1) {
return 1;
}
return $n * factorial($n - 1);
}
Пример:
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;
}
Пример:
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);
}
Пример:
gcd(8, 36); // 4
gcd(12, 8, 32); // 4
isEven
Возвращает true
, если заданное число чётное, false
в противном случае.
function isEven($number)
{
return ($number % 2) === 0;
}
Пример:
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;
}
Пример:
isPrime(3); // true
lcm
Возвращает наименьшее общее кратное двух или более чисел.
function lcm(...$numbers)
{
$ans = $numbers[0];
for ($i =
``` **lcm**
Возвращает наименьшее общее кратное массива чисел.
```php
function lcm($numbers) {
$ans = 1;
for ($i = 0; $i < count($numbers); $i++) {
$ans = ((($numbers[$i] * $ans)) / (gcd($numbers[$i], $ans)));
}
return $ans;
}
Примеры:
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];
}
Примеры:
maxN
Возвращает N максимальных элементов из предоставленного массива.
function maxN($numbers) {
$maxValue = max($numbers);
$maxValueArray = array_filter($numbers, function ($value) use ($maxValue) {
return $maxValue === $value;
});
return count($maxValueArray);
}
Пример:
minN
Возвращает N минимальных элементов из предоставленного массива.
function minN($numbers) {
$minValue = min($numbers);
$minValueArray = array_filter($numbers, function ($value) use ($minValue) {
return $minValue === $value;
});
return count($minValueArray);
}
Пример:
approximatelyEqual
Проверяет, равны ли два числа приблизительно друг другу.
Используйте abs(), чтобы сравнить абсолютную разницу двух значений с эпсилоном. Опустите третий параметр, эпсилон, чтобы использовать значение по умолчанию 0,001.
function approximatelyEqual($number1, $number2, $epsilon = 0.001) {
return abs($number1 - $number2) < $epsilon;
}
Пример:
clampNumber
Ограничивает число в пределах диапазона, указанного граничными значениями a и b.
Если число попадает в диапазон, верните число. В противном случае верните ближайшее число в диапазоне.
function clampNumber($num, $a, $b) {
return max(min($num, max($a, $b)), min($a, $b));
}
Пример:
endsWith
Проверьте, заканчивается ли строка заданной подстрокой.
function endsWith($haystack, $needle) {
return strrpos($haystack, $needle) === (strlen($haystack) - strlen($needle));
}
Пример:
firstStringBetween
Возвращает первую строку между строками из параметра start и end.
function firstStringBetween($haystack, $start, $end) {
return trim(strstr(strstr($haystack, $start), $end, true), $start . $end);
}
Пример:
isAnagram
Сравните две строки и возвращает true
, если обе строки являются анаграммами, false
в противном случае.
function isAnagram($string1, $string2) {
return count_chars($string1, 1) === count_chars($string2, 1);
}
Пример:
toLowerCase
Возвращает true
, если заданная строка в нижнем регистре, false
в противном случае.
function toLowerCase($string) {
return $string === strtolower($string);
}
Пример:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )