PHP #16 - Array (Bag. II)

01 Oct 2020 • ⏳ ~ 21 menit

 

array_map()

array_map() merupakan sebuah fungsi yang akan melakukan perulangan terhadap setiap elemen suatu array untuk diproses dan mengembalikan hasil dalam bentuk array. Hasil dari array_map() memiliki jumlah elemen yang sama dengan jumlah elemen array awal.

Sintaks array_map()

<?php
  array_map($callback, $array1, $array2, $array3, ...);
?>
  • $callback merupakan parameter yang memuat function yang akan dijalankan untuk memroses setiap elemen dari array-array yang dimuat pada parameter selanjutnya, sering disebut sebagai callback function. Callback function ini dapat menerima parameter sebagai penampung nilai sementara dari tiap elemen array yang akan diproses.
  • Sisa parameter akan diisi dengan array-array yang akan diolah elemen-elemennya, minimal terdapat satu array yang dimuat dalam parameter ini.

Mari kita lihat penggunaan function array_map() pada kode berikut.

<?php
  $kids = ['Tina', 'Siska', 'Dimas'];

  print_r(array_map(function($kid) {
    return "Nama : {$kid}";
  }, $kids));
?>

Penulisan callback function yang memiliki proses olahan sebaris dapat juga disingkat. Berikut contoh kode dengan bentuk singkatan callback function dari kode di atas.

<?php
  $kids = ['Tina', 'Siska', 'Dimas'];

  print_r(array_map(fn($kid) => "Nama : {$kid}", $kids));
?>

Setiap nilai elemen dari array $kids akan ditampung pada variabel $kid callback function untuk kemudian diproses. Sehingga, output dari kedua kode di atas adalah sebagai berikut.

Array
(
  [0] => Nama : Tina
  [1] => Nama : Siska
  [2] => Nama : Dimas
)

array_map() juga dapat menerima beberapa parameter untuk diproses dalam callback function-nya. Berikut contoh penerapannya.

<?php
  $kids = ['Tina', 'Siska', 'Dimas'];
  $kidInitials = ['T', 'S', 'D'];

  print_r(array_map(function($initial, $kid) {
    return "{$initial} : {$kid}";
  }, $kidInitials, $kids));
?>
Array
(
  [0] => T : Tina
  [1] => S : Siska
  [2] => D : Dimas
)

Pada callback function kali ini, kita memiliki parameter $initial dan $kid. Parameter $initial akan menerima setiap nilai elemen dari array $kidInitials dan parameter $kid dari array $kids.

array_combine()

array_combine() berfungsi untuk menggabungkan dua array menjadi satu dengan nilai dari elemen array pertama sebagai key dan array kedua sebagai value pada array hasil. Fungsi ini hanya dapat menggabungkan dua array yang memiliki jumlah elemen yang sama. Jika tidak sama, proses penggabungan tidak berlangsung dan peringatan akan ditampilkan.

Mari kita perhatikan contoh penerapannya pada kode berikut.

<?php
  $kids = ['Tina', 'Siska', 'Dimas'];
  $initials = ['T', 'S', 'D'];

  print_r(array_combine($initials, $kids));
  print_r(array_combine($kids, $initials));
?>
Array
(
  [T] => Tina
  [S] => Siska
  [D] => Dimas
)

Array
(
  [Tina] => T
  [Siska] => S
  [Dimas] => D
)

Jika kita mencoba untuk menggabungkan dua array yang memiliki jumlah elemen yang berbeda, kita akan mendapatkan peringatan. Perhatikan contoh kode berikut.

<?php
  $kids = ['Tina', 'Siska', 'Dimas', 'Kartini'];
  $initials = ['T', 'S', 'D'];
  
  print_r(array_combine($initials, $kids));
?>
Warning: array_combine(): Both parameters should have an equal number of elements in ...

array_intersect()

Fungsi array_intersect() digunakan untuk membandingkan value elemen dari beberapa array dan membentuk array baru dari setiap value elemen yang sama pada array-array tersebut. Fungsi ini menerima beberapa parameter berupa array, dengan minimal dua parameter array dan tanpa batasan maksimal. Fungsi ini mengembalikan nilai berupa array, dapat juga berupa array kosong bila tidak terdapat value elemen yang sama. Indeks atau key dari elemen array hasil dipertahankan dari indeks atau key elemen array parameter pertama.

Berikut contoh penerapan array_intersect().

<?php
  $firstNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  $secondNumbers = [2, 4, 6, 8, 10];
  $thirdNumbers = [1, 2, 4, 7, 11];

  print_r(array_intersect($firstNumbers, $secondNumbers, $thirdNumbers));
  // Key dari elemen yang bernilai sama akan dipertahankan dari array $firstNumbers
  

  $firstThings = [
    "a" => "apple",
    "b" => "ball",
    "c" => "cat",
    "d" => "dog"
  ];

  $secondThings = [
    "1" => "ant",
    "2" => "ball",
    "3" => "cap",
    "4" => "dog"
  ];

  print_r(array_intersect($firstThings, $secondThings));
  // Key dari elemen yang bernilai sama akan dipertahankan dari array $firstThings


  print_r(array_intersect($firstNumbers, $thirdNumbers, $secondThings));
  // Tidak ada elemen yang sama pada setiap array yang dibandingkan
?>
Array
(
  [1] => 2
  [3] => 4
)

Array
(
  [b] => ball
  [d] => dog
)

Array
(
)

array_merge()

array_merge() berfungsi untuk menggabungkan beberapa array dan menghasilkan sebuah array yang baru. Mari kita lihat contoh penerapannya pada kode berikut.

<?php
  $kids = ['Tina', 'Siska'];
  $newKids = ['Dimas', 'James'];
  $otherNewKids = ['Joko', 'Nadya'];
  
  print_r(array_merge($kids, $newKids, $otherNewKids));
?>
Array
(
  [0] => Tina
  [1] => Siska
  [2] => Dimas
  [3] => James
  [4] => Joko
  [5] => Nadya
)

array_merge() tidak hanya berlaku untuk numeric array, tetapi juga berlaku untuk associative array. Berikut contoh penerapan fungsi array_merge() pada associative array.

<?php
  $kids = [
    'J' => 'Joko',
    'T' => 'Tina',
    'S' => 'Siska',
  ];

  $newKids = [
    'D' => 'Dimas',
    'S' => 'Siti',
    'J' => 'James',
  ];

  print_r(array_merge($kids, $newKids));
?>
Array
(
  [J] => James
  [T] => Tina
  [S] => Siti
  [D] => Dimas
)

Dalam associative array, penggabungan dilakukan berdasarkan key. Jika beberapa elemen yang akan digabung memiliki key yang sama, value dari elemen terakhir yang akan digunakan pada array hasil.

array_keys()

Fungsi array_keys() mengembalikan semua key yang ada pada sebuah array. Fungsi ini hanya menerima satu parameter array dan mengembalikan hasil berupa numeric array. Berikut contoh penggunaan array_keys().

<?php
  $kids = [
    'T' => 'Tina',
    'S' => 'Siska',
    'D' => 'Dimas',
  ];

  print_r(array_keys($kids));
?>
Array
(
  [0] => T
  [1] => S
  [2] => D
)

array_values()

Mirip seperti array_keys(), hanya saja fungsi array_values() mengembalikan semua value dalam sebuah array. Fungsi ini juga mengembalikan hasil berupa numeric array. Mari kita perhatikan contoh penerapannya pada kode berikut.

<?php
  $kids = [
    'T' => 'Tina',
    'S' => 'Siska',
    'D' => 'Dimas',
  ];

  print_r(array_values($kids));
?>
Array
(
  [0] => Tina
  [1] => Siska
  [2] => Dimas
)

array_flip()

array_flip() merupakan sebuah fungsi yang bertujuan untuk mengganti posisi antara key dan value dari masing-masing elemen suatu array. Fungsi ini akan mengembalikan hasil berupa array yang sudah diolah dan hanya menerima satu parameter berupa array. Mari kita perhatikan contoh penerapannya pada kode berikut.

<?php
  $numbers = ['nol', 'satu', 'dua', 'tiga', 'empat'];
  $kids = [
    'T' => 'Tina',
    'S' => 'Siska',
    'D' => 'Dimas',
  ];

  print_r(array_flip($numbers));
  print_r(array_flip($kids));
?>
Array
(
  [nol] => 0
  [satu] => 1
  [dua] => 2
  [tiga] => 3
  [empat] => 4
)

Array
(
  [Tina] => T
  [Siska] => S
  [Dimas] => D
)

array_chunk()

array_chunk() berfungsi untuk memotong array menjadi bagian-bagian array.

Sintaks array_chunk()

<?php
  array_chunk($array, $size, $preserve_keys);
?>
  • $array memuat array yang akan diproses/dipotong.
  • $size memuat nilai bertipe integer yang mengatur jumlah elemen hasil setiap potongan.
  • $preserve_keys memuat nilai bertipe boolean dan bersifat opsional. Jika bernilai true, key atau indeks dari masing-masing elemen akan dipertahankan. Secara default, parameter ini bernilai false sehingga indeks elemen-elemen hasil potongan akan diatur ulang secara numerik.

Mari kita lihat contoh penggunaan array_chunk().

<?php
  $numbers = range(1, 13);

  // $preserve_keys bernilai false
  print_r(array_chunk($numbers, 4));

  // $preserve_keys bernilai true
  print_r(array_chunk($numbers, 4, true));
?>
Array
(
  [0] => Array
    (
      [0] => 1
      [1] => 2
      [2] => 3
      [3] => 4
    )

  [1] => Array
    (
      [0] => 5
      [1] => 6
      [2] => 7
      [3] => 8
    )

  [2] => Array
    (
      [0] => 9
      [1] => 10
      [2] => 11
      [3] => 12
    )

  [3] => Array
    (
      [0] => 13
    )
)

Array
(
  [0] => Array
    (
      [0] => 1
      [1] => 2
      [2] => 3
      [3] => 4
    )

  [1] => Array
    (
      [4] => 5
      [5] => 6
      [6] => 7
      [7] => 8
    )

  [2] => Array
    (
      [8] => 9
      [9] => 10
      [10] => 11
      [11] => 12
    )

  [3] => Array
    (
      [12] => 13
    )
)

array_reduce()

array_reduce() merupakan salah satu fungsi yang populer dalam PHP. Seperti namanya, array_reduce() digunakan untuk mengurangi jumlah elemen array dan menghasilkan satu hasil yang baru.

Sintaks array_reduce()

<?php
  array_reduce($array, $callback, $initial);
?>
  • $array memuat nilai bertipe array yang setiap elemennya akan diiterasi dan diproses menurut $callback.
  • $callback memuat fungsi yang akan digunakan dalam memroses elemen array, disebut sebagai callback function. Fungsi ini menerima dua parameter, antara lain:
    • $carry - menyimpan nilai hasil iterasi sebelumnya. Untuk iterasi pertama, parameter ini dapat menyimpan nilai dari $initial. Parameter ini juga yang menjadi nilai kembalian akhir.
    • $item - menyimpan nilai elemen yang akan diiterasi saat itu.
  • $initial merupakan parameter yang bersifat opsional. Parameter ini berfungsi untuk menentukan nilai awal yang akan diiterasi. Secara default, parameter ini bernilai null sehingga $carry memuat dari nilai elemen pertama dan $item memuat nilai elemen kedua dari array.

Penulisan callback function fungsi ini mirip seperti array_map().

Mari kita perhatikan contoh penerapan fungsi ini pada kode berikut.

Contoh 1

<?php
  $numbers = [4, 6, 8, 10];

  var_dump(array_reduce($numbers, fn($carry, $item) => $carry + $item));
  # Output: int(28)

  var_dump(array_reduce($numbers, function($carry, $item) {
    return $carry + $item;
  }));
  # Output: int(28)
?>

Pada contoh di atas, nilai 4 akan dimuat pada $carry dan nilai 6 pada $item untuk iterasi pertama dan menghasilkan nilai 10. Selanjutnya, nilai 10 dimuat pada $carry dan nilai 8 dimuat pada $item. Kedua dijumlahkan lagi dan menghasilkan nilai 18. Begitu seterusnya hingga mendapatkan nilai 28 sebagai nilai akhir pada iterasi terakhir.

Contoh 2

Kita akan mencoba menjumlahkan seluruh bilangan ganjil pada array dengan memanfaatkan array_reduce(). Perhatikan kode berikut.

<?php
  $numbers = [1, 1, 2, 2, 3, 4, 5];

  var_dump(array_reduce($numbers, fn($prev, $next) => ($next & 1 ? $prev + $next : $prev), 0));
  # Output: int(10)
?>

$next & 1 bertujuan untuk memeriksa $next sebagai bilangan ganjil.

Cara kerja kode di atas dapat kita lihat pada tabel berikut.

Iterasi$prev$nextHasil iterasiKeterangan
1010 + 1Nilai $prev diambil dari nilai $initial dan $next merupakan bilangan ganjil.
2111 + 1Nilai $prev diambil dari hasil iterasi ke-1 dan $next merupakan bilangan ganjil.
3222Nilai $prev diambil dari hasil iterasi ke-2 dan $next bukan bilangan ganjil.
4222Nilai $prev diambil dari hasil iterasi ke-3 dan $next bukan bilangan ganjil.
5232 + 3Nilai $prev diambil dari hasil iterasi ke-4 dan $next merupakan bilangan ganjil.
6545Nilai $prev diambil dari hasil iterasi ke-5 dan $next bukan bilangan ganjil.
7555 + 5Nilai $prev diambil dari hasil iterasi ke-6 dan $next merupakan bilangan ganjil.
Hasil10

Contoh 3

Pada contoh ketiga, kita akan membentuk array baru dari sebuah array multidimensional. Hasil array berupa pengelompokan berdasarkan key 'type'.

<?php
  $stocks = [
    [
      "id" => 101,
      "type" => "A",
      "qty" => 20,
    ],
    [
      "id" => 102,
      "type" => "A",
      "qty" => 50,
    ],
    [
      "id" => 103,
      "type" => "B",
      "qty" => 80,
    ],
    [
      "id" => 104,
      "type" => "C",
      "qty" => 100,
    ],
    [
      "id" => 105,
      "type" => "B",
      "qty" => 120,
    ],
    [
      "id" => 106,
      "type" => "B",
      "qty" => 70,
    ],
  ];

  print_r(array_reduce($stocks, function ($carry, $item) {
    $carry[$item["type"]] = ($carry[$item["type"]] ?? 0) + $item["qty"];
    return $carry;
  }, []));
?>
Array
(
  [A] => 70
  [B] => 270
  [C] => 100
)

Cara kerja kode di atas dapat kita lihat pada tabel berikut.

Iterasi$carry$itemHasil iterasi
1[][ "id" => 101, "type" => "A", "qty" => 20 ]$carry["A"] = 0 + 20
2[ 'A' => 20 ][ "id" => 102, "type" => "A", "qty" => 50 ]$carry["A"] = 20 + 50
3[ 'A' => 70 ][ "id" => 103, "type" => "B", "qty" => 80 ]$carry["B"] = 0 + 80
4[ 'A' => 70, 'B' => 80 ][ "id" => 104, "type" => "C", "qty" => 100 ]$carry["C"] = 0 + 100
5[ 'A' => 70, 'B' => 80, 'C' => 100 ][ "id" => 105, "type" => "B", "qty" => 120 ]$carry["B"] = 80 + 120
6[ 'A' => 70, 'B' => 200, 'C' => 100 ][ "id" => 106, "type" => "B", "qty" => 70 ]$carry["B"] = 200 + 70
Hasil[ 'A' => 70, 'B' => 270, 'C' => 100 ]

array_push() & array_pop()

array_push() adalah fungsi yang digunakan untuk menambahkan elemen baru pada akhir sebuah array. Fungsi ini menerima parameter pertama berupa array yang akan dimuat dan sisa parameter berupa nilai-nilai yang akan ditambahkan ke dalam array tersebut. Mari kita perhatikan contoh penerapannya pada kode berikut.

<?php
  $numbers = [1, 2, 3, 4];

  array_push($numbers, 5, -3, -7);
  print_r($numbers);

  array_push($numbers, [7 => 'seven'], null);
  print_r($numbers);
?>
Array
(
  [0] => 1
  [1] => 2
  [2] => 3
  [3] => 4
  [4] => 5
  [5] => -3
  [6] => -7
)

Array
(
  [0] => 1
  [1] => 2
  [2] => 3
  [3] => 4
  [4] => 5
  [5] => -3
  [6] => -7
  [7] => Array
    (
      [7] => seven
    )
  [8] => 
)

Nilai yang akan diisi dapat memiliki tipe data yang berbeda dengan elemen array yang telah ada.

Berlawanan dengan array_push(), fungsi array_pop() hanya menerima satu parameter berupa array dan menghapus elemen terakhir array tersebut. Hasil kembalian fungsi ini berupa elemen yang dihapus. Berikut contoh penerapannya.

<?php
  $alphabets = ['a', 'b', 'c', 'd'];
  $last = array_pop($alphabets);

  print_r($last);
  print_r($alphabets);
?>
d

Array
(
  [0] => a
  [1] => b
  [2] => c
)

array_shift() & array_unshift()

array_shift() merupakan kebalikan dari fungsi array_pop(), fungsi ini menghapus elemen pertama sebuah array dan mengembalikan nilai dari elemen tersebut. Sama halnya dengan array_pop(), fungsi array_shift() juga hanya dapat memuat satu parameter berupa array. Berikut contoh penerapan array_shift().

<?php
  $numbers = [1, 2, 3, 4];
  $last = array_shift($numbers);

  print_r($last);
  print_r($numbers);
?>
1

Array
(
  [0] => 2
  [1] => 3
  [2] => 4
)

Fungsi array_unshift() merupakan kebalikan dari array_push(). Fungsi ini bertujuan untuk menambahkan elemen baru pada awal sebuah array. Fungsi array_unshift() memiliki parameter yang sama dengan fungsi array_push(). Mari kita perhatikan contoh berikut.

<?php
  $alphabets = ['d', 'e'];

  array_unshift($alphabets, 'a', 'b', 'c');
  print_r($alphabets);

  array_unshift($alphabets, ['hashtag' => '#'], ['exclamation' => '!']);
  print_r($alphabets);
?>
Array
(
  [0] => a
  [1] => b
  [2] => c
  [3] => d
  [4] => e
)

Array
(
  [0] => Array
    (
      [hashtag] => #
    )
  [1] => Array
    (
      [exclamation] => !
    )
  [2] => a
  [3] => b
  [4] => c
  [5] => d
  [6] => e
)

array_filter()

Fungsi array_filter() digunakan untuk menyaring elemen dari sebuah array. Fungsi ini mengembalikan nilai berupa array yang memiliki jumlah elemen yang berkisar dari 0 hingga jumlah elemen array sebelum diproses.

Sintaks array_filter()

<?php
  array_filter($array, $callback, $flag);
?>
  • $array memuat nilai berupa array yang akan dilakukan proses penyaringan.
  • $callback memuat fungsi yang akan menetapkan proses penyaringan, disebut sebagai callback function. Parameter ini bersifat opsional dan secara default bernilai null, sehingga setiap elemen yang bernilai false akan dibuang. Jika callback function mengembalikan nilai true, elemen tersebut dinyatakan lulus penyaringan dan akan disertakan dalam array hasil.
  • $flag mengatur parameter yang dapat diterapkan pada callback function fungsi ini. Parameter ini bersifat opsional dan memiliki nilai default berupa 0. Berikut nilai yang dapat dimuat pada parameter ini, antara lain:
    • ARRAY_FILTER_USE_KEY - menetapkan hanya key dari setiap elemen yang dapat dijadikan sebagai parameter callback function.
    • ARRAY_FILTER_USE_BOTH - menetapkan key dan value dari setiap elemen dapat dijadikan sebagai parameter callback function.
    • 0 (default) - menetapkan hanya value dari setiap elemen yang dapat dijadikan sebagai parameter callback function.

Mari kita perhatikan contoh penerapan fungsi ini pada kode berikut.

<?php
  $random = ['0', 4, 1, 3, 0, '', null, [], true, false];

  var_dump(array_filter($random));
?>
array(4) {
  [1]=>
  int(4)
  [2]=>
  int(1)
  [3]=>
  int(3)
  [8]=>
  bool(true)
}

Penulisan callback function pada array_filter() mirip seperti array_map() dan array_reduce(). Pada kode berikut, kita akan mencoba melakukan penyaringan bilangan genap yang terdapat dalam sebuah array. Mari kita perhatikan contoh kode berikut.

<?php
  $numbers = [1, 2, 3, 4, 5, 6, 7, 8];

  print_r(array_filter($numbers, fn($number) => $number % 2 == 0));

  print_r(array_filter($numbers, function ($number) {
    return $number % 2 == 0;
  }));
?>
Array
(
  [1] => 2
  [3] => 4
  [5] => 6
  [7] => 8
)

Array
(
  [1] => 2
  [3] => 4
  [5] => 6
  [7] => 8
)

Ketika kita ingin melakukan penyaringan terkait key dari masing-masing elemen, kita dapat menetapkan nilai dari parameter $flag. Perhatikan contoh penerapannya pada kode berikut.

<?php
  $numbers = [1, 2, 3, 4, 5, 6, 7, 8];

  // array_filter() menggunakan flag key.
  print_r(array_filter($numbers, fn($key) => $key < 4, ARRAY_FILTER_USE_KEY));
  
  // array_filter() menggunakan flag both (key dan value).
  print_r(array_filter($numbers, function($number, $key) {
    return $number % 2 == 0 && $key < 4;
  }, ARRAY_FILTER_USE_BOTH));
?>
Array
(
  [0] => 1
  [1] => 2
  [2] => 3
  [3] => 4
)

Array
(
  [1] => 2
  [3] => 4
)

Ketika kita menetapkan nilai $flag dengan ARRAY_FILTER_USE_BOTH, parameter pertama pada callback function akan menampung value elemen dan parameter kedua menampung key elemen.

array_reverse()

Fungsi array_reverse() digunakan untuk membalikkan urutan dari setiap elemen pada suatu array.

Sintaks array_reverse()

<?php
  array_reverse($array, $preserve_keys);
?>
  • $array memuat nilai berupa array yang akan dibalikkan posisi setiap elemennya.
  • $preserve_keys menerima nilai bertipe boolean dan bersifat opsional. Secara default, parameter ini bernilai false. Parameter ini hanya untuk mengatur indeks pada numeric array. Jika ditetapkan sebagai true, indeks setiap elemen akan terpaut pada nilai elemen. Sebaliknya, indeks array hasil akan dibentuk ulang.

Key pada setiap elemen associative array akan tetap terpaut pada value elemen.

Mari kita lihat contoh penerapan array_reverse().

<?php
  $grades = ['A+', 'A', 'B+', 'B', 'C+', 'C'];
  $kids = [
    'T' => 'Tania',
    'A' => 'Andi',
    'B' => 'Beni',
  ];

  print_r(array_reverse($grades));
  print_r(array_reverse($grades, true));
  print_r(array_reverse($kids));
?>
Array
(
  [0] => C
  [1] => C+
  [2] => B
  [3] => B+
  [4] => A
  [5] => A+
)

Array
(
  [5] => C
  [4] => C+
  [3] => B
  [2] => B+
  [1] => A
  [0] => A+
)

Array
(
  [B] => Beni
  [A] => Andi
  [T] => Tania
)

Mengurutkan Elemen Array

Dalam PHP, kita dapat mengurutkan elemen-elemen array dengan memanfaatkan beberapa built-in function, antara lain:

sort()

Fungsi sort() digunakan untuk mengurutkan value elemen array secara ascending. Fungsi ini mengembalikan true jika pengurutan berhasil dan false jika gagal.

Sintaks sort()

<?php
  sort($array, $sort_flags);
?>
  • $array memuat array yang akan diurutkan elemen-elemennya.
  • $sort_flags merupakan parameter opsional dan berfungsi untuk menentukan aturan pengurutan. Berikut beberapa nilai yang dapat dimuat pada parameter ini.
    1. SORT_REGULAR - mengurutkan elemen secara normal (default).
    2. SORT_NUMERIC - mengurutkan elemen secara numerik.
    3. SORT_STRING - mengurutkan elemen sebagai string.
    4. SORT_LOCALE_STRING - mengurutkan elemen sebagai string sesuai dengan lokal sekarang, berlaku sejak PHP 5.0.2.
    5. SORT_NATURAL - mengurutkan elemen secara natural, seperti penggunaan natsort(), berlaku sejak PHP 5.4.0.
    6. SORT_FLAG_CASE - mengurutkan string secara case insensitive, dapat juga dikombinasikan dengan SORT_STRING atau SORT_NATURAL menggunakan operator Bitwise OR, berlaku sejak PHP 5.4.0.

Mari kita lihat contoh penggunaan sort() pada kode berikut.

<?php
  $brands = ['Dell', 'HP', 'Asus', 'Acer', 'Lenovo'];

  var_dump(sort($brands));
  print_r($brands);
?>
bool(true)

Array
(
  [0] => Acer
  [1] => Asus
  [2] => Dell
  [3] => HP
  [4] => Lenovo
)

rsort()

Fungsi rsort() merupakan kebalikan (reverse) dari sort(). Fungsi ini mengurutkan value elemen array secara descending. Hasil kembalian dan parameter fungsi ini sama dengan fungsi sort(). Mari kita lihat contoh penerapannya.

<?php
  $brands = ['Dell', 'HP', 'Asus', 'Acer', 'Lenovo'];

  var_dump(rsort($brands));
  print_r($brands);
?>
bool(true)

Array
(
  [0] => Lenovo
  [1] => HP
  [2] => Dell
  [3] => Asus
  [4] => Acer
)

Jika diperhatikan dengan teliti, penggunaan sort() dan rsort() mengatur ulang indeks dari masing-masing elemen array. Untuk menghindari hal ini, PHP menyediakan fungsi asort() dan arsort().

asort()

Fungsi asort() digunakan untuk melakukan pengurutan pada value elemen array secara ascending dan tetap mempertahankan indeks atau key elemen terhadap value-nya. Fungsi ini memiliki parameter dan hasil kembalian yang sama dengan sort(). Mari kita perhatikan contoh penerapannya.

<?php
  $brands = ['Dell', 'HP', 'Asus', 'Acer', 'Lenovo'];

  var_dump(asort($brands));
  print_r($brands);
?>
bool(true)

Array
(
  [3] => Acer
  [2] => Asus
  [0] => Dell
  [1] => HP
  [4] => Lenovo
)

arsort()

Fungsi arsort() adalah kebalikan dari fungsi asort(). Fungsi ini digunakan untuk melakukan pengurutan pada value elemen array secara descending dan tetap mempertahankan indeks atau key dari masing-masing elemen. Hasil kembalian dan parameter ini sama dengan fungsi asort(). Mari kita lihat contoh penerapannya pada kode berikut.

<?php
  $brands = ['Dell', 'HP', 'Asus', 'Acer', 'Lenovo'];

  var_dump(arsort($brands));
  print_r($brands);
?>
bool(true)

Array
(
  [4] => Lenovo
  [1] => HP
  [0] => Dell
  [2] => Asus
  [3] => Acer
)

Fungsi sort(), rsort(), asort(), dan arsort() mengurutkan array berdasarkan value elemen. Untuk melakukan pengurutan berdasarkan key elemen, kita dapat memanfaatkan ksort() dan krsort().

ksort()

ksort() digunakan untuk mengurutkan key elemen sebuah array secara ascending. Fungsi ini memiliki parameter dan hasil kembalian yang sama dengan sort(), hanya saja pengurutan didasarkan pada key masing-masing elemen. Berikut contoh penerapan fungsi ksort().

<?php
  $personilAges = [
    'Deddy' => 45,
    'Cindy' => 34,
    'Andy' => 41,
    'Alice' => 19,
    'Luffy' => 25,
  ];
  
  var_dump(ksort($personilAges));
  print_r($personilAges);
?>
bool(true)

Array
(
  [Alice] => 19
  [Andy] => 41
  [Cindy] => 34
  [Deddy] => 45
  [Luffy] => 25
)

krsort()

Fungsi krsort() merupakan kebalikan dari ksort(), artinya fungsi ini mengurutkan key elemen sebuah array secara descending. Berikut contoh penerapan fungsi ini.

<?php
  $personilAges = [
    'Deddy' => 45,
    'Cindy' => 34,
    'Andy' => 41,
    'Alice' => 19,
    'Luffy' => 25,
  ];
  
  var_dump(krsort($personilAges));
  print_r($personilAges);
?>
bool(true)

Array
(
  [Luffy] => 25
  [Deddy] => 45
  [Cindy] => 34
  [Andy] => 41
  [Alice] => 19
)

natsort()

natsort() merupakan fungsi pada PHP yang digunakan untuk mengurutkan value elemen sebuah array secara natural dan bersifat case-sensitive. Pengurutan natural merupakan pengurutan secara alfabet, tetapi bilangan multidigit diperlakukan sebagai sebuah kesatuan. Misalnya, “b12” dan “b2” akan diurutkan sebagai “b12” kemudian “b2” menurut pengurutan normal pada komputer, karena “1” diurutkan lebih kecil dibanding “2”. Namun pada pengurutan natural, “b2” akan diurutkan sebelum “b12”, karena “2” diurutkan lebih kecil dibanding “12”.

Fungsi natsort() hanya menerima satu parameter berupa array dan mengembalikan hasil berupa true jika pengurutan berhasil dan false jika gagal. Indeks atau key dari masing-masing elemen akan terpaut pada value yang diurutkan. Mari kita perhatikan contoh kode berikut.

<?php
  $files = ['document3.txt', 'Document2.txt', 'document10.txt', 'Document11.txt'];
  
  var_dump(natsort($files));
  print_r($files);
?>
bool(true)

Array
(
  [1] => Document2.txt
  [3] => Document11.txt
  [0] => document3.txt
  [2] => document10.txt
)

Pengurutan yang bersifat case-insensitive akan mendahulukan huruf kapital.

natcasesort()

Fungsi natcasesort() mirip seperti natsort(), hanya saja pengurutan natural fungsi ini bersifat case-insensitive. Fungsi ini menerima parameter dan memiliki hasil kembalian yang sama dengan natsort(). Mari kita perhatikan contoh penerapan natcasesort() pada kode berikut.

<?php
  $files = ['document3.txt', 'Document2.txt', 'document10.txt', 'Document11.txt'];
  
  var_dump(natcasesort($files));
  print_r($files);
?>
bool(true)

Array
(
  [1] => Document2.txt
  [0] => document3.txt
  [2] => document10.txt
  [3] => Document11.txt
)

usort()

Fungsi usort() digunakan untuk mengurutkan value elemen sebuah array dengan fungsi buatan tertentu. Fungsi ini mengembalikan nilai true jika pengurutan berhasil dan false jika terjadi kegagalan. Indeks atau key dari setiap elemen array hasil akan dibentuk ulang sebagai numeric array.

Sintaks usort()

<?php
  usort($array, $compare_function);
?>
  • $array memuat nilai berupa array yang akan diurutkan setiap elemennya berdasarkan fungsi $compare_function.
  • $compare_function merupakan parameter opsional dan memuat nilai berupa string dari nama fungsi buatan tertentu yang akan digunakan untuk memroses pengurutan. Fungsi buatan ini menerima dua parameter dan harus mengembalikan nilai berupa integer negatif, nol, atau positif.

Mari kita perhatikan contoh penerapan fungsi ini pada kode berikut.

<?php
  function myOwnSort($firstValue, $secondValue) {
    if ($firstValue['age'] == $secondValue['age']) {
      return 0;
    } else if ($firstValue['age'] < $secondValue['age']) {
      return -1;
    } else {
      return 1;
    }
  }

  $personils = [
    '101' => [
      'name' => 'Deddy',
      'age' => 45,
    ],
    '102' => [
      'name' => 'Cindy',
      'age' => 34,
    ],
    '103' => [
      'name' => 'Andy',
      'age' => 41,
    ],
    '104' => [
      'name' => 'Alice',
      'age' => 19,
    ],
    '105' => [
      'name' => 'Luffy',
      'age' => 25,
    ],
  ];
  
  var_dump(usort($personils, 'myOwnSort'));
  print_r($personils);
?>
bool(true)

Array
(
  [0] => Array
    (
      [name] => Alice
      [age] => 19
    )

  [1] => Array
    (
      [name] => Luffy
      [age] => 25
    )

  [2] => Array
    (
      [name] => Cindy
      [age] => 34
    )

  [3] => Array
    (
      [name] => Andy
      [age] => 41
    )

  [4] => Array
    (
      [name] => Deddy
      [age] => 45
    )
)

uasort()

Fungsi uasort() mirip seperti fungsi usort(), hanya saja key atau indeks dari setiap elemen array yang diurutkan akan tetap dipertahankan pada array hasil. Fungsi ini memiliki parameter dan hasil kembalian yang sama dengan usort(). Mari kita perhatikan contoh penerapannya.

<?php
  function myOwnSort($firstValue, $secondValue) {
    if ($firstValue['age'] == $secondValue['age']) {
      return 0;
    } else if ($firstValue['age'] < $secondValue['age']) {
      return -1;
    } else {
      return 1;
    }
  }

  $personils = [
    '101' => [
      'name' => 'Deddy',
      'age' => 45,
    ],
    '102' => [
      'name' => 'Cindy',
      'age' => 34,
    ],
    '103' => [
      'name' => 'Andy',
      'age' => 41,
    ],
    '104' => [
      'name' => 'Alice',
      'age' => 19,
    ],
    '105' => [
      'name' => 'Luffy',
      'age' => 25,
    ],
  ];
  
  var_dump(uasort($personils, 'myOwnSort'));
  print_r($personils);
?>
bool(true)

Array
(
  [104] => Array
    (
      [name] => Alice
      [age] => 19
    )

  [105] => Array
    (
      [name] => Luffy
      [age] => 25
    )

  [102] => Array
    (
      [name] => Cindy
      [age] => 34
    )

  [103] => Array
    (
      [name] => Andy
      [age] => 41
    )

  [101] => Array
    (
      [name] => Deddy
      [age] => 45
    )
)

uksort()

Fungsi uksort() memiliki cara kerja dan hasil kembalian yang mirip dengan usort(). Akan tetapi, pengurutan fungsi ini berdasarkan key dari elemen array, berbeda dengan usort() yang melakukan pengurutan berdasarkan value elemen. Fungsi ini juga memiliki parameter yang sama seperti usort(). Berikut contoh penerapan fungsi uksort().

<?php
  function myOwnSort($firstValue, $secondValue) {
    return strcmp($firstValue, $secondValue);
  }

  $personils = [
    'ID-5' => [
      'name' => 'Deddy',
      'age' => 45,
    ],
    'ID-2' => [
      'name' => 'Cindy',
      'age' => 34,
    ],
    'ID-4' => [
      'name' => 'Andy',
      'age' => 41,
    ],
    'ID-1' => [
      'name' => 'Alice',
      'age' => 19,
    ],
    'ID-3' => [
      'name' => 'Luffy',
      'age' => 25,
    ],
  ];
  
  var_dump(uksort($personils, 'myOwnSort'));
  print_r($personils);
?>
bool(true)

Array
(
  [ID-1] => Array
    (
      [name] => Alice
      [age] => 19
    )

  [ID-2] => Array
    (
      [name] => Cindy
      [age] => 34
    )

  [ID-3] => Array
    (
      [name] => Luffy
      [age] => 25
    )

  [ID-4] => Array
    (
      [name] => Andy
      [age] => 41
    )

  [ID-5] => Array
    (
      [name] => Deddy
      [age] => 45
    )
)

shuffle()

shuffle() merupakan salah satu built-in function PHP yang berfungsi untuk mengacak urutan elemen sebuah array. Fungsi ini hanya menerima satu parameter berupa array dan mengembalikan nilai berupa true jika pengacakan berhasil dan false jika gagal. Hasil acak dari fungsi ini dapat berbeda-beda setiap kita melakukan refresh page dan key (indeks) dari masing-masing elemen akan diatur ulang membentuk numeric array. Mari kita lihat contoh kode berikut.

Contoh penggunaan shuffle() :

<?php
  $personilAges = [
    'Deddy' => 45,
    'Cindy' => 34,
    'Andy' => 41,
    'Alice' => 19,
    'Luffy' => 25,
  ];
  
  var_dump(shuffle($personilAges));
  print_r($personilAges);
?>
bool(true)

Array
(
  [0] => 34
  [1] => 19
  [2] => 45
  [3] => 41
  [4] => 25
)
PHP

PHP #17 - DateTime

PHP #15 - Array (Bag. I)

comments powered by Disqus