Belajar PHP: Mengenal Array Pada PHP Part 2
Array merupakan sebuah wadah yang dapat menampung sekumpulan data atau nilai dengan tipe data yang berbeda. Dalam array, setiap data atau nilai terkait dengan key atau indeks. Oleh karena itu, array sering juga disebut sebagai ordered map.
Secara default, indeks pada array dimulai dari 0
. Dalam PHP, tipe data yang satu ini dapat dipergunakan sebagai list, collection, stack, dan sebagainya. Array dapat dibagi menjadi one-dimensional array dan multi-dimensional array, hal ini dikarenakan nilai dari anggotanya dapat berupa array juga. Sebelumnya baca dulu part 1 agar lebih paham Belajar PHP: Mengenal Array Pada PHP Part 1
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 bernilaitrue
, key atau indeks dari masing-masing elemen akan dipertahankan. Secara default, parameter ini bernilaifalse
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 bernilainull
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 |
$next |
Hasil iterasi | Keterangan |
---|---|---|---|---|
1 | 0 |
1 |
0 + 1 |
Nilai $prev diambil dari nilai $initial dan $next merupakan bilangan ganjil. |
2 | 1 |
1 |
1 + 1 |
Nilai $prev diambil dari hasil iterasi ke-1 dan $next merupakan bilangan ganjil. |
3 | 2 |
2 |
2 |
Nilai $prev diambil dari hasil iterasi ke-2 dan $next bukan bilangan ganjil. |
4 | 2 |
2 |
2 |
Nilai $prev diambil dari hasil iterasi ke-3 dan $next bukan bilangan ganjil. |
5 | 2 |
3 |
2 + 3 |
Nilai $prev diambil dari hasil iterasi ke-4 dan $next merupakan bilangan ganjil. |
6 | 5 |
4 |
5 |
Nilai $prev diambil dari hasil iterasi ke-5 dan $next bukan bilangan ganjil. |
7 | 5 |
5 |
5 + 5 |
Nilai $prev diambil dari hasil iterasi ke-6 dan $next merupakan bilangan ganjil. |
Hasil | 10 |
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 |
$item |
Hasil 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 bernilainull
, sehingga setiap elemen yang bernilaifalse
akan dibuang. Jika callback function mengembalikan nilaitrue
, 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 berupa0
. 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
denganARRAY_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 bernilaifalse
. Parameter ini hanya untuk mengatur indeks pada numeric array. Jika ditetapkan sebagaitrue
, 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.
SORT_REGULAR
– mengurutkan elemen secara normal (default).SORT_NUMERIC
– mengurutkan elemen secara numerik.SORT_STRING
– mengurutkan elemen sebagai string.SORT_LOCALE_STRING
– mengurutkan elemen sebagai string sesuai dengan lokal sekarang, berlaku sejak PHP 5.0.2.SORT_NATURAL
– mengurutkan elemen secara natural, seperti penggunaannatsort()
, berlaku sejak PHP 5.4.0.SORT_FLAG_CASE
– mengurutkan string secara case insensitive, dapat juga dikombinasikan denganSORT_STRING
atauSORT_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()
danrsort()
mengatur ulang indeks dari masing-masing elemen array. Untuk menghindari hal ini, PHP menyediakan fungsiasort()
danarsort()
.
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()
, danarsort()
mengurutkan array berdasarkan value elemen. Untuk melakukan pengurutan berdasarkan key elemen, kita dapat memanfaatkanksort()
dankrsort()
.
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
)