Jawaban:
Gunakan array_unique () .
Contoh:
$array = array(1, 2, 2, 3);
$array = array_unique($array); // Array is now (1, 2, 3)
$array = array_unique($array, SORT_REGULAR);
Menggunakan array_values(array_unique($array));
array_unique
: untuk array unik
array_values
: untuk pengindeksan ulang
array_unique
mengembalikan objek dengan pasangan kunci dan nilai DAN array_values
hanya mengembalikan nilai sebagai array.
//Find duplicates
$arr = array(
'unique',
'duplicate',
'distinct',
'justone',
'three3',
'duplicate',
'three3',
'three3',
'onlyone'
);
$unique = array_unique($arr);
$dupes = array_diff_key( $arr, $unique );
// array( 5=>'duplicate', 6=>'three3' 7=>'three3' )
// count duplicates
array_count_values($dupes); // array( 'duplicate'=>1, 'three3'=>2 )
Satu-satunya hal yang berhasil bagi saya adalah:
$array = array_unique($array, SORT_REGULAR);
Sunting: SORT_REGULAR
menjaga urutan yang sama dari array asli.
terkadang array_unique()
bukan itu caranya, jika Anda ingin mendapatkan item unik DAN duplikat ...
$unique=array("","A1","","A2","","A1","");
$duplicated=array();
foreach($unique as $k=>$v) {
if( ($kt=array_search($v,$unique))!==false and $k!=$kt )
{ unset($unique[$kt]); $duplicated[]=$v; }
}
sort($unique); // optional
sort($duplicated); // optional
hasil pada
array ( 0 => '', 1 => 'A1', 2 => 'A2', ) /* $unique */
array ( 0 => '', 1 => '', 2 => '', 3 => 'A1', ) /* $duplicated */
Kita dapat membuat jenis array untuk menggunakan nilai terakhir ini akan diperbarui ke kolom atau nilai kunci dan kita akan mendapatkan nilai unik dari array ...
$array = array (1,3,4,2,1,7,4,9,7,5,9);
$data=array();
foreach($array as $value ){
$data[$value]= $value;
}
array_keys($data);
OR
array_values($data);
explode(",", implode(",", array_unique(explode(",", $YOUR_ARRAY))));
Ini akan menangani asosiasi kunci dan membuat serialisasi kunci untuk array baru yang dihasilkan :-)
explode("," $YOUR_ARRAY)
saat $YOUR_ARRAY
ini array("1", "2", "3")
?
Tergantung pada ukuran array Anda, saya telah menemukan
$array = array_values( array_flip( array_flip( $array ) ) );
bisa lebih cepat dari array_unique.
Itu cara yang bagus untuk melakukannya. Mungkin ingin memastikan hasilnya kembali array lagi. Sekarang Anda hanya menunjukkan nilai unik terakhir.
Coba ini:
$arrDuplicate = array ("","",1,3,"",5);
foreach (array_unique($arrDuplicate) as $v){
if($v != "") { $arrRemoved[] = $v; }
}
print_r ($arrRemoved);
if (@!in_array($classified->category,$arr)){
$arr[] = $classified->category;
?>
<?php } endwhile; wp_reset_query(); ?>
nilai cek pertama kali dalam array dan menemukan nilai yang sama mengabaikannya
Hapus nilai duplikat dari array asosiatif di PHP.
$arrDup = Array ('0' => 'aaa-aaa' , 'SKU' => 'aaa-aaa' , '1' => '12/1/1' , 'date' => '12/1/1' , '2' => '1.15' , 'cost' => '1.15' );
foreach($arrDup as $k => $v){
if(!( isset ($hold[$v])))
$hold[$v]=1;
else
unset($arrDup[$k]);
}
Array ([0] => aaa-aaa [1] => 12/1/1 [2] => 1.15)
Ada beberapa cara untuk melakukan ini, yaitu sebagai berikut
//first method
$filter = array_map("unserialize", array_unique(array_map("serialize", $arr)));
//second method
$array = array_unique($arr, SORT_REGULAR);
Jika Anda khawatir dengan kinerja dan memiliki larik sederhana, gunakan:
array_keys(array_flip($array));
Ini jauh lebih cepat daripada array_unique.
$a = array(1, 2, 3, 4);
$b = array(1, 6, 5, 2, 9);
$c = array_merge($a, $b);
$unique = array_keys(array_flip($c));
print_r($unique);
$arrDuplicate = array ("","",1,3,"",5);
foreach(array_unique($arrDuplicate) as $v){
if($v != "" ){$arrRemoved = $v; }}
print_r($arrRemoved);
function arrayUnique($myArray)
{
$newArray = Array();
if (is_array($myArray))
{
foreach($myArray as $key=>$val)
{
if (is_array($val))
{
$val2 = arrayUnique($val);
}
else
{
$val2 = $val;
$newArray=array_unique($myArray);
$newArray=deleteEmpty($newArray);
break;
}
if (!empty($val2))
{
$newArray[$key] = $val2;
}
}
}
return ($newArray);
}
function deleteEmpty($myArray)
{
$retArray= Array();
foreach($myArray as $key=>$val)
{
if (($key<>"") && ($val<>""))
{
$retArray[$key] = $val;
}
}
return $retArray;
}
coba kode singkat & manis ini -
$array = array (1,4,2,1,7,4,9,7,5,9);
$unique = array();
foreach($array as $v){
isset($k[$v]) || ($k[$v]=1) && $unique[] = $v;
}
var_dump($unique);
Keluaran -
array(6) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(2)
[3]=>
int(7)
[4]=>
int(9)
[5]=>
int(5)
}
if
.
<?php
$arr1 = [1,1,2,3,4,5,6,3,1,3,5,3,20];
print_r(arr_unique($arr1));
function arr_unique($arr) {
sort($arr);
$curr = $arr[0];
$uni_arr[] = $arr[0];
for($i=0; $i<count($arr);$i++){
if($curr != $arr[$i]) {
$uni_arr[] = $arr[$i];
$curr = $arr[$i];
}
}
return $uni_arr;
}
Di sini saya telah membuat array kosong kedua dan menggunakan for
loop dengan array pertama yang memiliki duplikat. Ini akan berjalan sebanyak hitungan dari array pertama. Kemudian dibandingkan dengan posisi array dengan array pertama dan cocok bahwa item ini sudah ada atau tidak dengan menggunakan in_array
. Jika tidak maka itu akan menambahkan item ke array kedua array_push
.
$a = array(1,2,3,1,3,4,5);
$count = count($a);
$b = [];
for($i=0; $i<$count; $i++){
if(!in_array($a[$i], $b)){
array_push($b, $a[$i]);
}
}
print_r ($b);
foreach
loop?
foreach
karena saya jauh lebih nyaman dengan untuk loop. Itu dia.
Hal ini dapat dilakukan melalui fungsi I membuat tiga fungsi duplikat mengembalikan nilai-nilai yang duplikat dalam array.
Fungsi kedua pengembalian tunggal hanya nilai-nilai yang berarti tunggal tidak diulang dalam array dan fungsi ketiga dan penuh mengembalikan semua nilai tetapi tidak digandakan jika ada nilai digandakan itu mengubahnya menjadi tunggal;
function duplicate($arr) {
$duplicate;
$count = array_count_values($arr);
foreach($arr as $key => $value) {
if ($count[$value] > 1) {
$duplicate[$value] = $value;
}
}
return $duplicate;
}
function single($arr) {
$single;
$count = array_count_values($arr);
foreach($arr as $key => $value) {
if ($count[$value] == 1) {
$single[$value] = $value;
}
}
return $single;
}
function full($arr, $arry) {
$full = $arr + $arry;
sort($full);
return $full;
}
Alternatif untuk fungsi array_unique () ..
Menggunakan algoritma Brute force
// [1] Ini array kami dengan item yang digandakan
$ cocok = ["jorge", "melvin", "chelsy", "melvin", "jorge", "smith"];
// [2] Wadah untuk array baru tanpa item duplikat
$ arr = [];
// [3] dapatkan panjang dari array yang digandakan dan atur ke var len untuk digunakan untuk for loop
$ len = count ($ cocok);
// [4] Jika cocok dengan kunci array ($ i) perulangan loop saat ini tidak tersedia di // [4] array $ arr lalu dorong nilai kunci iterasi saat ini dari kecocokan [$ i] // [4] ke array array.
untuk ($ i = 0; $ i
if(array_search($matches[$i], $arr) === false){ array_push($arr,$matches[$i]); } } //print the array $arr. print_r($arr); //Result: Array ( [0] => jorge [1] => melvin [2] => chelsy [3] => smith )
Saya telah melakukan ini tanpa menggunakan fungsi apa pun.
$arr = array("1", "2", "3", "4", "5", "4", "2", "1");
$len = count($arr);
for ($i = 0; $i < $len; $i++) {
$temp = $arr[$i];
$j = $i;
for ($k = 0; $k < $len; $k++) {
if ($k != $j) {
if ($temp == $arr[$k]) {
echo $temp."<br>";
$arr[$k]=" ";
}
}
}
}
for ($i = 0; $i < $len; $i++) {
echo $arr[$i] . " <br><br>";
}
Note that array_unique() is not intended to work on multi dimensional arrays.