1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/seconds-of-code-30-seconds-of-php-code

Клонировать/Скачать
README.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 00:00 62989fc

30 seconds of php code

Кураторская подборка полезных фрагментов PHP-кода, которые можно понять за 30 секунд или меньше.

Примечание: Этот проект вдохновлён 30 Seconds of Code, но не связан с этим проектом.

Содержание

📚 Массивы

Содержание

➗ Математика

Содержание

📜 Строки

Содержание

🎛️ Функции

Содержание

📚 Массивы

all

Возвращает 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

⬆ Вернуться к началу

any

Возвращает 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

⬆ Вернуться к началу

chunk

Разбивает массив на меньшие массивы указанного размера.

function chunk($items, $size)
{
    return array_chunk($items, $size);
}
Примеры
chunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]

⬆ Вернуться к началу

deepFlatten

Глубоко выравнивает массив.

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]

⬆ Вернуться к началу

drop

Возвращает новый массив, из которого удалены n элементов слева.

function drop($items, $n = 1)
{
    return array_slice($items, $n);
}
Примеры
drop([1, 2, 3]); // [2,3]
drop([1, 2, 3], 2); // [3]

⬆ Вернуться к началу

findLast

Возвращает последний элемент, для которого предоставленная функция возвращает правдивое значение.

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']]

➗ Math

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;
}

Примеры:

  • 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];
}

Примеры:

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

maxN

Возвращает N максимальных элементов из предоставленного массива.

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

    return count($maxValueArray);
}

Пример:

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

minN

Возвращает N минимальных элементов из предоставленного массива.

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

    return count($minValueArray);
}

Пример:

  • 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;
}

Пример:

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

clampNumber

Ограничивает число в пределах диапазона, указанного граничными значениями a и b.

Если число попадает в диапазон, верните число. В противном случае верните ближайшее число в диапазоне.

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

Пример:

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

📜 Строка

endsWith

Проверьте, заканчивается ли строка заданной подстрокой.

function endsWith($haystack, $needle) {
    return strrpos($haystack, $needle) === (strlen($haystack) - strlen($needle));
}

Пример:

  • endsWith('Hi, this is me', 'me'); // true

firstStringBetween

Возвращает первую строку между строками из параметра start и end.

function firstStringBetween($haystack, $start, $end) {
    return trim(strstr(strstr($haystack, $start), $end, true), $start . $end);
}

Пример:

  • firstStringBetween('This is a [custom] string', '[', ']'); // custom

isAnagram

Сравните две строки и возвращает true, если обе строки являются анаграммами, false в противном случае.

function isAnagram($string1, $string2) {
    return count_chars($string1, 1) === count_chars($string2, 1);
}

Пример:

  • isAnagram('act', 'cat'); // true

toLowerCase

Возвращает true, если заданная строка в нижнем регистре, false в противном случае.

function toLowerCase($string) {
    return $string === strtolower($string);
}

Пример:

  • toLowerCase('Morning shows the');

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/seconds-of-code-30-seconds-of-php-code.git
git@api.gitlife.ru:oschina-mirror/seconds-of-code-30-seconds-of-php-code.git
oschina-mirror
seconds-of-code-30-seconds-of-php-code
seconds-of-code-30-seconds-of-php-code
master