Một số hàm tự xây dựng thường sử dụng trong PHP
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
