Belajar PHP – Menggunakan array_unique

Seri belajar PHP hari ini adalah bagaimana kita menggunakan array_unique pada PHP. Pada kasus tertentu kita mendapatkan data yang berasal baik itu dari database atau user input pada form yang telah kita sediakan, namun memiliki nilai yang duplicate atau bisa disebut sama. Untuk menghindari data yang kita kelola itu duplikat, pada PHP kita bisa menggunakan array_unique ini.

Pada dokumentasi PHP, array unique ini sudah ada pada versi PHP4 dan pada Versi PHP 7 masih bisa kita gunakan lho.

array_unique ini digunakan untuk menghindari duplikat dari nilai sebuah array.

array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

Fungsi array_unique ini juga mengeluarkan nilai yang unique pada array sehingga kita bisa membuat variable baru untuk memisahkan antara variable yang duplikat dengan variable yang sudah unique.

<?php
$input = array(1,2,"1",3,"3","5",5,1);
$result = array_unique($input);
print_r($result);
?>

Hasil dari kode diatas seperti ini.

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

Bisa kawan-kawan lihat, hasil mengeluarkan nilai yang unique.

Kawan-kawan juga bisa lihat array_unique ini juga bisa membandingkan tipe integer dan string ya. Lalu keluaran dari array_unique ini mengeluarkan key dimana array value itu berasal, maksudnya key 0 => 1, key 1 => 2, key 3 => 3 dan seterusnya. Jadi output tidak selalu berurutan.

array_unique ini belum bisa melakukan proses pada array multiple. Sebagai contoh berikut ini.

<?php
$input = [
    0 => [
        "id" => 1,
        "value" => "nilai 1"
    ],
    1 => [
        "id" => 2,
        "value" => "nilai 2"
    ],
    2 => [
        "id" => 3,
        "value" => "nilai 3"
    ],
    3 => [
        "id" => 4,
        "value" => "nilai 2"
    ]
];

$result = array_unique($input);
var_dump($result);
?>

Jika kawan-kawan menjalankan kode berikut, akan muncul error seperti ini.

<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>[...][...]</b> on line <b>21</b><br />
array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(1)
    ["value"]=>
    string(7) "nilai 1"
  }
}

Error tersebut karena array_unique berusaha untuk mengkonversi nilai array menjadi sebuah string namun ternyata nilai adalah array. Sehingga muncullah error seperti itu.

Lalu bagaimana cara agar value “nilai 2” ini tidak duplikat?

Ada beberapa cara, salah satunya kita gunakan array_column sehingga menjadi seperti berikut ini.

<?php
$input = [
    0 => [
        "id" => 1,
        "value" => "nilai 1"
    ],
    1 => [
        "id" => 2,
        "value" => "nilai 2"
    ],
    2 => [
        "id" => 3,
        "value" => "nilai 3"
    ],
    3 => [
        "id" => 4,
        "value" => "nilai 2"
    ]
];

$result = array_unique(array_column($input, 'value'));
var_dump($result);
?>

keluaran akan menjadi seperti berikut:

array(3) {
  [0]=>
  string(7) "nilai 1"
  [1]=>
  string(7) "nilai 2"
  [2]=>
  string(7) "nilai 3"
}

Sesuai dengan yang kita mau ya, karena fungsi array_column adalah mengambil multiple array menjadi satu array dengan menginputkan key yang ingin dikeluarkan. Jika kawan-kawan mencoba tanpa array_unique akan seperti ini.

<?php
$input = [
    0 => [
        "id" => 1,
        "value" => "nilai 1"
    ],
    1 => [
        "id" => 2,
        "value" => "nilai 2"
    ],
    2 => [
        "id" => 3,
        "value" => "nilai 3"
    ],
    3 => [
        "id" => 4,
        "value" => "nilai 2"
    ]
];

$result = array_column($input, 'value');
var_dump($result);
?>

// result
array(4) {
  [0]=>
  string(7) "nilai 1"
  [1]=>
  string(7) "nilai 2"
  [2]=>
  string(7) "nilai 3"
  [3]=>
  string(7) "nilai 2"
}

Sampai disini, mudah-mudahan bermanfaat untuk seri belajar php array unique 😉

 

 

Artikel lainnya

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: