+4

Một số hàm tự xây dựng thường sử dụng trong PHP

isLowerCase

Trả về true nếu chuỗi đã cho là chữ thường, ngược lại là false.

function isLowerCase($string)
{
    return $string === strtolower($string);
}
isLowerCase('Morning shows the day!'); // false
isLowerCase('hello'); // true

groupBy

Nhóm các phần tử của một mảng dựa trên chức năng đã cho.

function groupBy($items, $func)
{
    $group = [];
    foreach ($items as $item) {
        if ((!is_string($func) && is_callable($func)) || function_exists($func)) {
            $key = call_user_func($func, $item);
            $group[$key][] = $item;
        } elseif (is_object($item)) {
            $group[$item->{$func}][] = $item;
        } elseif (isset($item[$func])) {
            $group[$item[$func]][] = $item;
        }
    }

    return $group;
}
groupBy(['one', 'two', 'three'], 'strlen'); // [3 => ['one', 'two'], 5 => ['three']]

median

Trả về giá trị trung bình của một mảng số.

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

once

Chỉ gọi một hàm một lần.

function once($function)
{
    return function (...$args) use ($function) {
        static $called = false;
        if ($called) {
            return;
        }
        $called = true;
        return $function(...$args);
    };
}
$add = function ($a, $b) {
    return $a + $b;
};

$once = once($add);

var_dump($once(10, 5)); // 15
var_dump($once(20, 10)); // null

orderBy

Sắp xếp tập hợp các mảng hoặc đối tượng theo khóa.

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

take

Trả về một mảng có n phần tử bị loại bỏ từ đầu.

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]

gcd

Tính ước số chung lớn nhất giữa hai hoặc nhiều số.

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

last

Trả về phần tử cuối cùng trong một mảng.

function last($items)
{
    return end($items);
}
last([1, 2, 3]); // 3

startsWith

Kiểm tra xem một chuỗi có bắt đầu bằng một chuỗi con nhất định hay không.

function startsWith($haystack, $needle)
{
    return strpos($haystack, $needle) === 0;
}
startsWith('Hi, this is me', 'Hi'); // true

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí