Jak mogę usunąć zduplikowane wartości z tablicy w PHP?Jak usunąć zduplikowane wartości z tablicy w PHP
Odpowiedz
Użyj array_unique().
przykład:
$array = array(1, 2, 2, 3);
$array = array_unique($array); // Array is now (1, 2, 3)
I odbywa się to bez stosowania funkcji.
$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>";
}
explode(",", implode(",", array_unique(explode(",", $YOUR_ARRAY))));
To zajmie najważniejszych stowarzyszeń i szeregować klucze do powstałej nowej tablicy :-)
Jaki byłby efekt 'explode (", "$ YOUR_ARRAY)' gdy '$ YOUR_ARRAY' jest 'tablica (" 1 "," 2 "," 3 ")'? – kiamlaluno
@kiamlaluno - :), a odpowiedź brzmi: ** Ostrzeżenie: explode() oczekuje, że parametr 2 będzie ciągiem, tablica podana w ... on line .... ** –
@JesseChisholm Tak, to był punkt, ale nikt najwyraźniej nie zauważył kodu. – kiamlaluno
$array = array("Ram","Thiru","Ram","Thiraviya");
$array = array_unique($array);
wyjściowa:
"Ram" "Thiru", "Thiraviya"
Jest to całkowicie bezcelowy duplikat zaakceptowanej odpowiedzi z * 2008 *. –
czasami array_unique()
nie jest droga, jeśli chcesz uzyskać niepowtarzalny i zduplikowane pozycje ...
$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
wyniki na
array (0 => '', 1 => 'A1', 2 => 'A2',) /* $unique */
array (0 => '', 1 => '', 2 => '', 3 => 'A1',) /* $duplicated */
$arrDuplicate = array ("","",1,3,"",5);
foreach(array_unique($arrDuplicate) as $v){
if($v != ""){$arrRemoved = $v; }}
print_r($arrRemoved);
Faceci, to byłby mądrzejszy sposób usuwania duplikatów .......... – user1045247
To naprawdę niczego nie wyjaśnia i nie wydaje się być "mądrzejsze". – Sven
Zawsze możesz wyjaśnić, dlaczego edytując swój post, kliknij link "edytuj" na końcu swojej odpowiedzi. Proponuję również zapoznać się z FAQ: http://stackoverflow.com/faq – ForceMagic
//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)
To świetny sposób, aby to zrobić. Może chcieć upewnić się, że jego dane wyjściowe powróciły ponownie do tablicy. Teraz wyświetlasz tylko ostatnią niepowtarzalną wartość.
Spróbuj tego:
$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;
}
spróbować tej krótkiej & słodki kodu -
$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);
Wyjście -
array(6) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(2)
[3]=>
int(7)
[4]=>
int(9)
[5]=>
int(5)
}
Czy możesz mi wyjaśnić, jak działa ten kod? –
Nadużywanie operatorów boolowskich do sterowania przepływem w ten sposób niepotrzebnie jest mylące. Po prostu użyj 'if'. –
ja t może być wykonane za pomocą funkcji i funkcja duplikat funkcji zwraca wartości, które są duplikowane w tablicy. Funkcja druga zwraca tylko te wartości, które są pojedynczą średnią nie powtarzaną w tablicy, a trzecia i pełna funkcja zwracają wszystkie wartości, ale nie są duplikowane, jeśli dowolna wartość jest powielane konwertować go wydzielić
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;
}
}
zależności od rozmiaru tablicy, znalazłem
$array = array_values(array_flip(array_flip($array)));
może być szybsze niż array_unique.
Więcej informacji na temat tego, co się tutaj dzieje i czy będzie szybszy przy większej lub mniejszej macierzy. –
Podwójna klapka usunie zduplikowane wartości, ponieważ klucz nie może istnieć dwa razy, w przeciwnym razie zostanie nadpisany. Jeśli dowolna wartość zostanie zduplikowana, a tablica zostanie odwrócona, ostatnim wystąpieniem (zakładam) będzie wartość klucza. – Goldentoa11
W PHP 7 zauważyłem, że przerzucanie tablicy wielowymiarowej więcej niż raz może niespodziewanie zmienić kolejność elementów tablicy. –
Jedyną rzeczą, która pracowała dla mnie jest:
$array = array_unique($array, SORT_REGULAR);
Funkcja array_unique zrobi to za Ciebie. Po prostu potrzebne, aby dodać SORT_REGULAR flag
$items_thread = array_unique($items_thread, SORT_REGULAR);
<?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;
}
Używaj array_values(array_unique($array));
array_unique
: dla unikalnej tablicy array_values
: dla reindeksowania
if (@!in_array($classified->category,$arr)){
$arr[] = $classified->category;
?>
<?php } endwhile; wp_reset_query(); ?>
pierwszą wartość sprawdzić czas oczekiwania na tablicy i znalezione ta sama wartość zignoruj to:
Możemy stworzyć taki rodzaj tablicy, aby korzystać z tej ostatniej wartości będą aktualizowane w kolumnie lub wartości klucza i będziemy mieli unikalną wartość z tablicy ...
$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);
Aby usunąć zduplikowane wartości z tablicy można wykorzystać array_unique ($ your_array) Funkcja PHP
Usuń zduplikowane wartości z tablicy asocjacyjnej w 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)
$result = array();
foreach ($array as $key => $value){
if(!in_array($value, $result))
$result[$key]=$value;
}
- 1. Jak usunąć wartości z tablicy w PHP?
- 2. Jak usunąć puste wartości z tablicy wielowymiarowej w PHP?
- 3. php coraz unikalne wartości z tablicy wielowymiarowej
- 4. Jak wykryć zduplikowane wartości w tablicy w Ruby?
- 5. Usuń zduplikowane elementy tablicy asocjacyjnej w PHP
- 6. usunąć duplikaty wartości z tablicy
- 7. usunąć wartości z tablicy asocjacyjnej
- 8. C#: Usunąć zduplikowane wartości ze słownika?
- 9. Jak usunąć zduplikowane wiersze z macierzy
- 10. Jak usunąć wartości zerowe z tablicy równolegle
- 11. Konwersja tablicy PHP z XML, który zawiera zduplikowane elementy
- 12. Jak usunąć zduplikowane wiersze z SQL?
- 13. Jak całkowicie usunąć zduplikowane wiersze
- 14. Python: Jak usunąć zduplikowane listy z listy?
- 15. klucze PHP tablicy wartości
- 16. Umieszczanie wartości tablicy PHP w tablicy javascript?
- 17. JavaScript usunąć wartości z tablicy kluczy obiekt
- 18. Jak usunąć zduplikowane nazwy kolumn w R?
- 19. Usunąć ciąg znaków z tablicy PHP?
- 20. Jak usunąć wiele elementów tablicy według wartości?
- 21. PHP - Jak usunąć rekursywnie puste wpisy tablicy?
- 22. Jak usunąć zduplikowane wiersze przez kolumnę w macierzy w R
- 23. PHP - Get wartości tablicy z indeksu liczbowego
- 24. PHP: Usunąć pierwszy i ostatni element tablicy
- 25. Jak usunąć dicts z listy zawierającej zduplikowane pola w pythonie?
- 26. Jak połączyć klucze i wartości z tablicy w PHP
- 27. usuwając zduplikowane wpisy z multi-d tablicy w Pythonie
- 28. Jak usunąć klucz i zwrócić wartość z tablicy PHP?
- 29. Usunąć zduplikowane linie z pliku tekstowego?
- 30. PHP Jak usunąć element z tablicy - array_uniqe nie zadziała
@Ian - 'Należy zauważyć, że array_unique() jest nie jest przeznaczony do pracy w tablicach wielowymiarowych. " –
Powyższe zachowanie zachowuje klucze elementów. Jeśli chcesz je ponownie zindeksować, dodatkowo zastosuj wartości array_values: http://www.php.net/manual/en/function.array-values.php – CodeVirtuoso
perfect ....... 'array_values (array_unique ($ array)) 'robi dla mnie idealną rzecz. Dzięki @Freelancer –