Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Usuwanie duplikatów w tablicy
sebekzosw
post
Post #1





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


Mam taką tablicę:

Kod
Array
(
    [0] => Array
        (
            [id] => 155199
            [tresc] => Wesołych Świąt
        )

    [1] => Array
        (
            [id] => 155199
            [tresc] =>  Wesołych Świąt
        )
    
    [2] => Array
        (
            [id] => 4244
            [tresc] =>  Nowy Rok
        )
    
    [3] => Array
        (
            [id] => 4244
            [tresc] =>  Nowy Rok
        )
)


I jak usunąć duplikaty pod względem id czyli mam tablice z 50 elementami, a w niej mam 5 elementów o id 4244, to jak zrobić, aby został 1 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
Blame
post
Post #2





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


array_unique
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Rozum: http://forum.php.pl/index.php?act=Search&a...blica+duplikaty
Inteligencja: http://php.net/array_unique
Lenistwo: http://www.google.pl/search?hl=pl&sour...mp;aq=f&oq=

Przyszłość: http://www.php.net/manual/pl/index.php
Go to the top of the page
+Quote Post
sebekzosw
post
Post #4





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


myślicie, że nie próbowałem array_unique ? próbowałem:

  1. echo count($tablica)."<br />";
  2. $wynik = array_unique($tablica);
  3. echo count($wynik);


I za każdym razem usuwało mi wszystko, więc zostawał mi tylko 1 element ;|
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cierpliwość: (IMG:style_emoticons/default/smile.gif) Jest jeszcze coś takiego jak komentarze, nikt przecież nie powiedział, że masz użyc array_unique hehe (IMG:style_emoticons/default/tongue.gif)
http://pl2.php.net/manual/pl/function.array-unique.php#60323

Ten post edytował wookieb 24.12.2009, 12:02:39
Go to the top of the page
+Quote Post
crackcomm
post
Post #6





Grupa: Zarejestrowani
Postów: 184
Pomógł: 6
Dołączył: 23.02.2008
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Kod
<?php
$arr = array();

$arr[0]['id']      = '155199';
$arr[0]['tresc'] = 'Wesołych Świąt';
$arr[1]['id']      = '155199';
$arr[1]['tresc'] = 'Wesołych Świąt';
$arr[2]['id']      = '4244';
$arr[2]['tresc'] = 'Nowy Rok';
$arr[3]['id']     = '4244';
$arr[3]['tresc'] = 'Nowy Rok';

foreach( $arr as $key => $val ) {
    $arr[$key] = serialize($val);
}


$arr = array_unique($arr);

foreach( $arr as $key => $val ) {
    $arr[$key] = unserialize($val);
}

print_r($arr);

?>


Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


Odświeżam wątek. Mam nieco inny problem


$wykonaj = mysql_query("SELECT * FROM osoby WHERE cos tam cos tam") or die ("Błąd w łączeniu");
while($wiersz = mysql_fetch_array($wykonaj))
{
$num[]=$wiersz['num'];
$imie[]=$wiersz['im1'];
$nazw[]=$wiersz['nazw'];
$pesel[]=$wiersz['pesel'];
$ur[]=$wiersz['ur'];
$syn[]=$wiersz['syn'];
$miej[]=$wiersz['miej'];
$ul[]=$wiersz['ul'];
$dom[]=$wiersz['dom'];
$co[]=$wiersz['co'];};
}

Chciałbym wyrzucić z wszystkich tablic te wartosci, dla których w tablicy $num[] wystąpił dubel.

Przykładowo :

$num[0]='222';
$num[1]='992';
$num[2]='222';


$num[2] jest zdublowany wiec we wszystkich tablicach wyrzucić tą wartość w pozycji [2]


Kto podpowie jak to zrobić. Nie mam bladego pojęcia.

Go to the top of the page
+Quote Post
aras785
post
Post #8





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


http://php.net/manual/en/function.array-unique.php#95203
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Po prostu przy wrzucaniu sprawdzaj czy juz jest czy nie...
  1. while($wiersz = mysql_fetch_array($wykonaj))
  2. {
  3. if (in_array($wiersz['num'], $num))
  4. continue;
  5.  
  6. $num[]=$wiersz['num'];
  7. $imie[]=$wiersz['im1'];
  8. $nazw[]=$wiersz['nazw'];
  9. $pesel[]=$wiersz['pesel'];
  10. $ur[]=$wiersz['ur'];
  11. $syn[]=$wiersz['syn'];
  12. $miej[]=$wiersz['miej'];
  13. $ul[]=$wiersz['ul'];
  14. $dom[]=$wiersz['dom'];
  15. $co[]=$wiersz['co'];};
  16. }

i juz
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post
Post #10





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


@ nospor

Dzięki wielkie, ale mam prośbę. Czy mógłbyś mi napisać co właściwie zrobiłeś ?
Chciałbym wiedzieć co to oznacz niż tylko gotowy kod, wtedy lepiej zrozumiem problem.
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jedyne co dopisałem to to:
if (in_array($wiersz['num'], $num))
continue;
no bez żartów, że muszę ci to tłumaczyć... zajrzyj do manuala jak nie wiesz co robi in_array lub continue


A co robi dokładnie ten kod to ci przecież napisałem:
Cytat
Po prostu przy wrzucaniu sprawdzaj czy juz jest czy nie...
Czyli moj kod sprawdza czy jest już wartosc w tablicy czy nie...
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post
Post #12





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


Wywaliło mi
Warning: in_array() expects parameter 2 to be array, null given in
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Bo najwyrażniej nigdzie nie powiedziałes, że $num jest tablicą...

Przed pętlą daj:
$num = array();
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post
Post #14





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


@ nospor
Jesteś Wielki, mała rzecz a cieszy jak Vasco Da Gama gdy zbliżał się do Indii.

Nie będę klikał pomógł bo i tak masz rekord nie do pobicia jak Jane Ahonen w 2005 w Willingen. :-)


@aras785
array_unique to zły pomysł. Jedną tablicę można "od-dublować" ale co z pozostałymi ?

Ten post edytował 8_pasazer_NOSTROMO 9.01.2013, 10:37:57
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:02