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

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

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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 )

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

Введение

Избранные фрагменты кода на PHP, которые можно изучить за 30 секунд. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
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