Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.lang.php > #15021

Re: jak usunąć (unset) element tablicy tablic

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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