Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.lang.php > #15021
| From | ww <ww@o2.pl> |
|---|---|
| Newsgroups | pl.comp.lang.php |
| Subject | Re: jak usunąć (unset) element tablicy tablic |
| Date | 2016-03-15 08:18 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <nc8cpv$ct6$1@dont-email.me> (permalink) |
| References | <d2e90009-5bab-4546-b3a8-42c94f6e9c96@googlegroups.com> |
W dniu 2016-03-14 o 20:49, jivanmukta@poczta.onet.pl pisze:
> Mam na zmiennej $a tablicę rekordów z bazy danych, czyli inaczej $a to tablica tablic. Potrzebuję usunąć powtarzające się rekordy (duplikaty). W tym celu sortuję (asort) tablicę a potem wywołuję moją funkcję removeDuplicates. Problem w tym, że pomimo usuwania (unset) elementów-rekordów nie znikają one z tablicy $a. Całość wygląda tak:
>
> function removeDuplicates(array &$a) { // $a musi być posortowana
> $prev = NULL;
> $toUnset = array();
> foreach ($a as $i => &$r) {
> if ($prev['announcement_year'] == $r['announcement_year'] &&
Tu bym jeszcze sprawdzał najpierw czy prev nie jest NULL.
> $prev['announcement_month'] == $r['announcement_month'] &&
> $prev['announcement_no'] == $r['announcement_no']) {
> echo 'unset:',$prev['announcement_year'],' ',$prev['announcement_month'],' ',$prev['announcement_no'];echo '<br>';
> unset($prev);
> }
> $prev =& $r;
> czyli wywołało się unset dla rekordu 2011 7 2. Jednak nie został on usunięty z tablicy.
> Jak to poprawnie zrobić? Byłym wdzięczny za pomoc.
Co gdyby w prev zapamiętywać nie rekord a index ($i) a potem robić
unset($a[$prev]) ? A gdyby tablica była poindeksowana zawsze rozsnaco
do 0 to w ogóle można porównywać $i z $i+1 bez zapamiętywania
czegokolwiek w $prev.
Jeśli chodzi o te & w pętli foreach to tam jest zdaje się jakiś dziwny
bug (chociaż zdaniem autorów php to jest feature). Ostatni element
chyba z jakiegoś powodu jest psuty. Kiedyś długo się zastaawiałem czemu
właśnie coś podobnego mi rozwala tablice.
Back to pl.comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar
jak usunąć (unset) element tablicy tablic jivanmukta@poczta.onet.pl - 2016-03-14 12:49 -0700
Re: jak usunąć (unset) element tablicy tablic ww <ww@o2.pl> - 2016-03-15 08:18 +0100
Re: jak usunąć (unset) element tablicy tablic jivanmukta@poczta.onet.pl - 2016-03-15 04:24 -0700
Re: jak usunąć (unset) element tablicy tablic jivanmukta@poczta.onet.pl - 2016-03-15 04:35 -0700
Re: jak usunąć (unset) element tablicy tablic ww <ww@o2.pl> - 2016-03-15 12:47 +0100
Re: jak usunąć (unset) element tablicy tablic jivanmukta@poczta.onet.pl - 2016-03-15 09:55 -0700
Re: jak usunąć (unset) element tablicy tablic Rafal Podsiadly <spinacz24@gmail.com> - 2016-03-16 00:30 -0700
Re: jak usunąć (unset) element tablicy tablic jivanmukta@poczta.onet.pl - 2016-03-16 04:18 -0700
Re: jak usunąć (unset) element tablicy tablic Rafal Podsiadly <spinacz24@gmail.com> - 2016-03-16 12:50 -0700
Re: jak usunąć (unset) element tablicy tablic jivanmukta@poczta.onet.pl - 2016-03-18 05:03 -0700
Re: jak usunąć (unset) element tablicy tablic Rafal Podsiadly <spinacz24@gmail.com> - 2016-03-19 00:04 -0700
Re: jak usunąć (unset) element tablicy tablic jivanmukta@poczta.onet.pl - 2016-03-20 21:13 -0700
Re: jak usunąć (unset) element tablicy tablic Rafal Podsiadly <spinacz24@gmail.com> - 2016-03-21 08:56 -0700
Re: jak usunąć (unset) element tablicy tablic jivanmukta@poczta.onet.pl - 2016-03-22 09:19 -0700
Re: jak usunąć (unset) element tablicy tablic Rafal Podsiadly <spinacz24@gmail.com> - 2016-03-29 09:58 -0700
csiph-web