30 Detik Mudah Belajar Kode PHP

PHP merupakan bahasa pemrograman script server-side yang didesain untuk pengembangan web. Pertama kali di kembangkan oleh Rasmust Lerdorf pada tahun 1995, dan sekarang php dikembangkan oleh The PHP Group.

PHP merupakan singkatan dari Personal Home Page, dengan tujuan awal digunakan untuk membuat website pribadi. Dalam beberapa tahun perkembangannya, PHP menjelma menjadi bahasa pemrograman web yang populer dan tidak hanya digunakan untuk membuat halaman web sederhana, tetapi juga website populer yang digunakan oleh jutaan orang seperti wikipedia, wordpress, joomla, dll.


String


1. EndsWith

Periksa apakah string diakhiri dengan substring yang diberikan.

function endsWith($haystack, $needle)
{
    return strrpos($haystack, $needle) === (strlen($haystack) - strlen($needle));
}
Contoh
endsWith('Hi, this is me', 'me'); // true

2. FirstStringBetween

Mengembalikan string pertama yang ada di antara string dari awal dan akhir parameter.

function firstStringBetween($haystack, $start, $end)
{
    return trim(strstr(strstr($haystack, $start), $end, true), $start . $end);
}
Contoh
firstStringBetween('This is a [custom] string', '[', ']'); // custom

3. IsAnagram

Bandingkan dua string dan mengembalikan true jika kedua string adalah anagram, false sebaliknya.

function isAnagram($string1, $string2)
{
    return count_chars($string1, 1) === count_chars($string2, 1);
}
Contoh
isAnagram('act', 'cat'); // true

4. IsLowerCase

Mengembalikan nilai true jika string yang diberikan adalah huruf kecil, salah jika sebaliknya.

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

Contoh
isLowerCase('Morning shows the day!'); // false
isLowerCase('hello'); // true

5. IsUpperCase

Mengembalikan nilai true jika string yang diberikan adalah huruf besar, false jika sebaliknya.

function isUpperCase($string)
{
    return $string === strtoupper($string);
}

Contoh
isUpperCase('MORNING SHOWS THE DAY!'); // true
isUpperCase('qUick Fox'); // false

6. Palindrome

Mengembalikan nilai true jika string yang diberikan adalah palindrome, false jika tidak.

function palindrome($string)
{
    return strrev($string) === (string) $string;
}

Contoh
palindrome('racecar'); // true
palindrome(2221222); // true

7. StartsWith

Periksa apakah string dimulai dengan substring yang diberikan.

function startsWith($haystack, $needle)
{
    return strpos($haystack, $needle) === 0;
}

Contoh
startsWith('Hi, this is me', 'Hi'); // true

8. CountVowels

Mengembalikan jumlah vokal dalam string yang disediakan. Gunakan ekspresi reguler untuk menghitung jumlah vokal (A, E, I, O, U) dalam sebuah string.

function countVowels($string)
{
    preg_match_all('/[aeiou]/i', $string, $matches);

    return count($matches[0]);
}
Contoh
countVowels('sampleInput'); // 4

9. Decapitalize

Memenggal kepala huruf pertama dari sebuah string. Memenggal kepala huruf pertama dari string dan kemudian menambahkannya dengan sisa string. Hapus parameter upperRest untuk menjaga string tetap utuh, atau atur menjadi true untuk dikonversi menjadi huruf besar.

function decapitalize($string, $upperRest = false)
{
    return lcfirst($upperRest ? strtoupper($string) : $string);
}
Contoh
decapitalize('FooBar'); // 'fooBar'

10. IsContains

Periksa apakah ada kata / substring dalam input string yang diberikan. Menggunakan strpos untuk menemukan posisi kemunculan pertama sebuah substring dalam sebuah string. Mengembalikan nilai true atau false

function isContains($string, $needle)
{
    return strpos($string, $needle) === false ? false : true;
}
Contoh
isContains('This is an example string', 'example'); // true
isContains('This is an example string', 'hello'); // false

Function


1. Compose

Kembalikan fungsi baru yang menyusun beberapa fungsi menjadi satu yang bisa dipanggil.

function compose(...$functions)
{
    return array_reduce(
        $functions,
        function ($carry, $function) {
            return function ($x) use ($carry, $function) {
                return $function($carry($x));
            };
        },
        function ($x) {
            return $x;
        }
    );
}
Contoh
$compose = compose(
    // add 2
    function ($x) {
        return $x + 2;
    },
    // multiply 4
    function ($x) {
        return $x * 4;
    }
);
$compose(3); // 20

2. Memoize

Memoisasi suatu fungsi menghasilkan memori.

function memoize($func)
{
    return function () use ($func) {
        static $cache = [];

        $args = func_get_args();
        $key = serialize($args);
        $cached = true;

        if (!isset($cache[$key])) {
            $cache[$key] = $func(...$args);
            $cached = false;
        }

        return ['result' => $cache[$key], 'cached' => $cached];
    };
}
Contoh
$memoizedAdd = memoize(
    function ($num) {
        return $num + 10;
    }
);

var_dump($memoizedAdd(5)); // ['result' => 15, 'cached' => false]
var_dump($memoizedAdd(6)); // ['result' => 16, 'cached' => false]
var_dump($memoizedAdd(5)); // ['result' => 15, 'cached' => true]

3. Curry

Curry suatu fungsi untuk mengambil argumen dalam beberapa panggilan.

function curry($function)
{
    $accumulator = function ($arguments) use ($function, &$accumulator) {
        return function (...$args) use ($function, $arguments, $accumulator) {
            $arguments = array_merge($arguments, $args);
            $reflection = new ReflectionFunction($function);
            $totalArguments = $reflection->getNumberOfRequiredParameters();

            if ($totalArguments <= count($arguments)) {
                return $function(...$arguments);
            }

            return $accumulator($arguments);
        };
    };

    return $accumulator([]);
}
Contoh
$curriedAdd = curry(
    function ($a, $b) {
        return $a + $b;
    }
);

$add10 = $curriedAdd(10);
var_dump($add10(15)); // 25

4. Once

Panggil fungsi hanya sekali.

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

$once = once($add);

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

5. VariadicFunction

Fungsi variadik memungkinkan Anda untuk menangkap sejumlah variabel argumen ke suatu fungsi. Fungsi menerima sejumlah variabel untuk mengeksekusi kode. Ini menggunakan for loop untuk beralih pada parameter.

function variadicFunction($operands)
{
    $sum = 0;
    foreach($operands as $singleOperand) {
        $sum += $singleOperand;
    }
    return $sum;
}
Contoh
variadicFunction([1, 2]); // 3
variadicFunction([1, 2, 3, 4]); // 10

Math


1. Average

Mengembalikan rata-rata dua angka atau lebih.

function average(...$items)
{
    $count = count($items);
    
    return $count === 0 ? 0 : array_sum($items) / $count;
}
Contoh
average(1, 2, 3); // 2

2. Factorial

Menghitung faktorial angka.

function factorial($n)
{
    if ($n <= 1) {
        return 1;
    }

    return $n * factorial($n - 1);
}

Contoh
factorial(6); // 720

3. Fibonacci

Menghasilkan array, berisi deret Fibonacci, hingga istilah ke-n.

function fibonacci($n)
{
    $sequence = [0, 1];

    for ($i = 2; $i < $n; $i++) {
        $sequence[$i] = $sequence[$i-1] + $sequence[$i-2];
    }

    return $sequence;
}

Contoh
fibonacci(6); // [0, 1, 1, 2, 3, 5]

4. Gcd

Menghitung pembagi umum terbesar antara dua atau lebih angka.

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

Contoh
gcd(8, 36); // 4
gcd(12, 8, 32); // 4

5. IsEven

Mengembalikan nilai true jika angka yang diberikan genap, false jika tidak.

function isEven($number)
{
    return ($number % 2) === 0;
}
Contoh
isEven(4); // true

6. IsPrime

Cek apakah bilangan bulat yang disediakan adalah bilangan prima.

function isPrime($number)
{
    $boundary = floor(sqrt($number));
    for ($i = 2; $i <= $boundary; $i++) {
        if ($number % $i === 0) {
            return false;
        }
    }

    return $number >= 2;
}

Contoh
isPrime(3); // true

7. Lcm

Menghasilkan kelipatan paling umum dari dua atau lebih angka.

function lcm(...$numbers)
{
    $ans = $numbers[0];
    for ($i = 1, $max = count($numbers); $i < $max; $i++) {
        $ans = (($numbers[$i] * $ans) / gcd($numbers[$i], $ans));
    }

    return $ans;
}

Contoh
lcm(12, 7); // 84
lcm(1, 3, 4, 5); // 60

8. Median

Mengembalikan median array angka.

function median($numbers)
{
    sort($numbers);
    $totalNumbers = count($numbers);
    $mid = floor($totalNumbers / 2);

    return ($totalNumbers % 2) === 0 ? ($numbers[$mid - 1] + $numbers[$mid]) / 2 : $numbers[$mid];
}

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

9. MaxN

Mengembalikan n elemen maksimum dari array yang disediakan.

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

    return count($maxValueArray);
}
Contoh
maxN([1, 2, 3, 4, 5, 5]); // 2
maxN([1, 2, 3, 4, 5]); // 1

10. MinN

Mengembalikan n elemen minimum dari array yang disediakan.

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

    return count($minValueArray);
}
Contoh
minN([1, 1, 2, 3, 4, 5, 5]); // 2
minN([1, 2, 3, 4, 5]); // 1

11. ApproximatelyEqual

Memeriksa apakah dua angka kira-kira sama satu sama lain. Gunakan abs() untuk membandingkan perbedaan absolut dari kedua nilai tersebut dengan epsilon. Hapus parameter ketiga, epsilon, untuk menggunakan nilai default 0,001.

function approximatelyEqual($number1, $number2, $epsilon = 0.001)
{
    return abs($number1 - $number2) < $epsilon;
}

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

12. ClampNumber

Clamps num dalam rentang inklusif yang ditentukan oleh nilai batas a dan b. Jika num berada dalam kisaran, kembalikan num. Jika tidak, kembalikan nomor terdekat dalam kisaran.

function clampNumber($num, $a, $b)
{
    return max(min($num, max($a, $b)), min($a, $b));
}
Contoh
clampNumber(2, 3, 5); // 3
clampNumber(1, -1, -5); // -1

Array


1. All

Mengembalikan nilai true jika fungsi yang disediakan mengembalikan nilai true untuk semua elemen array, salah jika tidak.

function all($items, $func)
{
    return count(array_filter($items, $func)) === count($items);
}
Contoh
all([2, 3, 4, 5], function ($item) {
    return $item > 1;
}); // true

2. Any

Mengembalikan nilai true jika fungsi yang disediakan mengembalikan nilai true untuk setidaknya satu elemen dari array, false jika tidak.

function any($items, $func)
{
    return count(array_filter($items, $func)) > 0;
}
Contoh
any([1, 2, 3, 4], function ($item) {
    return $item < 2;
}); // true

3. DeepFlatten

Deep meratakan array.

function deepFlatten($items)
{
    $result = [];
    foreach ($items as $item) {
        if (!is_array($item)) {
            $result[] = $item;
        } else {
            $result = array_merge($result, deepFlatten($item));
        }
    }

    return $result;
}
Contoh
deepFlatten([1, [2], [[3], 4], 5]); // [1, 2, 3, 4, 5]

4. Drop

Mengembalikan array baru dengan n elemen dihapus dari kiri.

function drop($items, $n = 1)
{
    return array_slice($items, $n);
}
Contoh
drop([1, 2, 3]); // [2,3]
drop([1, 2, 3], 2); // [3]

5. FindLast

Mengembalikan elemen terakhir yang fungsi yang disediakan mengembalikan nilai kebenaran.

function findLast($items, $func)
{
    $filteredItems = array_filter($items, $func);

    return array_pop($filteredItems);
}

Contoh
findLast([1, 2, 3, 4], function ($n) {
    return ($n % 2) === 1;
});
// 3

6. FindLastIndex

Mengembalikan indeks elemen terakhir yang fungsi yang disediakan mengembalikan nilai sebenarnya.

function findLastIndex($items, $func)
{
    $keys = array_keys(array_filter($items, $func));

    return array_pop($keys);
}

Contoh
findLastIndex([1, 2, 3, 4], function ($n) {
    return ($n % 2) === 1;
});
// 2

7. Flatten

Ratakan array hingga kedalaman satu tingkat.

function flatten($items)
{
    $result = [];
    foreach ($items as $item) {
        if (!is_array($item)) {
            $result[] = $item;
        } else {
            $result = array_merge($result, array_values($item));
        }
    }

    return $result;
}

Contoh
flatten([1, [2], 3, 4]); // [1, 2, 3, 4]

8. GroupBy

Mengelompokkan elemen-elemen dari array berdasarkan fungsi yang diberikan.

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

Contoh
groupBy(['one', 'two', 'three'], 'strlen'); // [3 => ['one', 'two'], 5 => ['three']]

9. HasDuplicates

Periksa daftar datar untuk nilai duplikat. Mengembalikan nilai true jika nilai duplikat ada dan false jika nilai semuanya unik.

function hasDuplicates($items)
{
    return count($items) > count(array_unique($items));
}
Contoh
hasDuplicates([1, 2, 3, 4, 5, 5]); // true

10. Head

Mengembalikan kepala daftar.

function head($items)
{
    return reset($items);
}

Contoh
head([1, 2, 3]); // 1

11. Last

Mengembalikan elemen terakhir dalam array.

function last($items)
{
    return end($items);
}

Contoh
last([1, 2, 3]); // 3

12. Pluck

Mengambil kembali semua nilai untuk kunci yang diberikan:

function pluck($items, $key)
{
    return array_map( function($item) use ($key) {
        return is_object($item) ? $item->$key : $item[$key];
    }, $items);
}

Contoh
pluck([
    ['product_id' => 'prod-100', 'name' => 'Desk'],
    ['product_id' => 'prod-200', 'name' => 'Chair'],
], 'name');
// ['Desk', 'Chair']

13. Pull

Memotong array asli untuk memfilter nilai yang ditentukan.

function pull(&$items, ...$params)
{
    $items = array_values(array_diff($items, $params));
    return $items;
}

Contoh
$items = ['a', 'b', 'c', 'a', 'b', 'c'];
pull($items, 'a', 'c'); // $items will be ['b', 'b']

14. Reject

Memfilter koleksi menggunakan callback yang diberikan.

function reject($items, $func)
{
    return array_values(array_diff($items, array_filter($items, $func)));
}

Contoh
reject(['Apple', 'Pear', 'Kiwi', 'Banana'], function ($item) {
    return strlen($item) > 4;
}); // ['Pear', 'Kiwi']

15. Remove

Menghapus elemen dari array yang fungsi yang dikembalikan salah.

function remove($items, $func)
{
    $filtered = array_filter($items, $func);

    return array_diff_key($items, $filtered);
}

Contoh
remove([1, 2, 3, 4], function ($n) {
    return ($n % 2) === 0;
});
// [0 => 1, 2 => 3]

16. Tail

Mengembalikan semua elemen dalam array kecuali yang pertama.

function tail($items)
{
    return count($items) > 1 ? array_slice($items, 1) : $items;
}
Contoh
tail([1, 2, 3]); // [2, 3]

17. Take

Mengembalikan array dengan n elemen yang dihapus dari awal.

function take($items, $n = 1)
{
    return array_slice($items, 0, $n);
}

Contoh
take([1, 2, 3], 5); // [1, 2, 3]
take([1, 2, 3, 4, 5], 2); // [1, 2]

18. Without

Menyaring elemen array, yang memiliki salah satu dari nilai yang ditentukan.

function without($items, ...$params)
{
    return array_values(array_diff($items, $params));
}

Contoh
without([2, 1, 2, 3], 1, 2); // [3]

19. OrderBy

Mengurutkan koleksi array atau objek dengan kunci.

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

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

20. BubbleSort

Mengurutkan array menggunakan algoritma semacam Bubble. Algoritma pengurutan ini adalah algoritma berbasis perbandingan di mana setiap pasangan elemen yang berdekatan dibandingkan dan elemen-elemen ditukar jika mereka tidak berurutan.

function bubbleSort($array) {
    $array = array_unique($array);
    $arrayLength = count($array);
    for ($i = 0; $i < $arrayLength - 1; $i++) { 
        $swapped = false;
        for ($j = 0; $j < $arrayLength - 1 - $i; $j++) {
            if ($array[$j] > $array[$j + 1]) {
                $temp = $array[$j];
                $array[$j] = $array[$j + 1];
                $array[$j + 1] = $temp;
                $swapped = true;
            }
        }
        if (!$swapped) {
            break;
        }
    }
    return $array;
}

Contoh
bubbleSort([44, 11, 7, 20, 12, 90, 35, 5]); // [5,7,11,12,20,35,44,90]

21. Rotate

Memutar array (dalam arah kiri) dengan jumlah shift. Diberikan indeks $shift, itu menggabungkan nilai array setelah $ shift dengan nilai sebelum $ shift.

function rotate($array, $shift = 1)
{
    for ($i = 0; $i < $shift; $i++) {
        array_push($array, array_shift($array));
    }

    return $array;
}

Contoh
rotate([1, 3, 5, 2, 4]); // [3, 5, 2, 4, 1]
rotate([1, 3, 5, 2, 4], 2); // [5, 2, 4, 1, 3]

Sumber Code Chalarangelo
Share Comments
comments powered by Disqus