Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Powtarzające się rekordy w tablicy. Przeindeksowanie?
Forum PHP.pl > Forum > Przedszkole
perhydrol
Posiadam plik tekstowy który zaczytuję kolejno do tablicy, poniżej zamieszczam tylko część aby za obrazować sytuację

  1. <?php
  2. (
  3.    [0] => Array
  4.        (
  5.            [0] => 192.168.0.1
  6.            [1] => Kowalski_A
  7.            [2] => 00:0E:2E:E0:00:D4
  8.        )
  9.  
  10.    [1] => Array
  11.        (
  12.            [0] => 192.168.0.3
  13.            [1] => Stepien_R
  14.            [2] => 00:0E:2E:B0:4D:8E
  15.        )
  16.    [2] => Array
  17.        (
  18.            [0] => 192.168.0.3
  19.            [1] => Stepien_R
  20.            [2] => 00:0E:2E:B0:4D:8E
  21.        )
  22. )
  23. ?>


czy może mi ktoś podpowiedzieć w jaki sposób mogę usunąć powtarzające się rekordy w tablicy.

-z góry dziękuję za pomoc
Fifi209
Hmm array_slice()" title="Zobacz w manualu PHP" target="_manual
Lub unset($tablica['index']);
perhydrol
Cytat(fifi209 @ 19.03.2009, 00:13:34 ) *


OK co zrobić z indeksem tablicy po zastosowaniu funkcji unset() ponieważ po usunieciu jednego z elementów wygląda ona właśnie tak:

Array
(
[0] => Array
(
[0] => 192.168.0.1
[1] => Kowalski_A
[2] => 00:0E:2E:E0:00:D4
)

[2] => Array
(
[0] => 192.168.0.29
[1] => Stepien_R
[2] => 00:0E:2E:E0:60:A1
)

)

nasuwa się tutaj myśl przeindeksowania w jakiś sposób tej że tablicy, zna ktoś może jakiś sensowny sposób questionmark.gif
tomsi
Pewien nie jestem, ale może coś w tym stylu zobacz
http://webmade.org/kursy-online/przegladan...ic-kurs-php.php
b4x
Ja miałem kiedyś bodajże podobny problem.

Rozwiązałem go jakoś tak.

  1. <?php
  2.  
  3. $tablica[0] = array ('test', 'dwa', 'trzy');
  4. $tablica[2] = array ('test', 'dwa', 'trzy');
  5.  
  6. print_r($tablica);
  7.  
  8.    foreach ($tablica as $t) {
  9.  
  10.        $nowa[] = $t;
  11.  
  12.    }
  13.  
  14. print_r($nowa);
  15. ?>
perhydrol
jeśli ktoś będzie potrzebował kiedyś "usunąć" wybrany rekord z
tablicy oraz ją "przeindeksować" zamieszczam skuteczne rozwiązanie:

  1. <?php
  2. #Funkcja usuwająca wybrany indeks w tablicy oraz pozwalająca prze indeksować ją ponownie
  3. function DelRow($array, $indice)
  4.    {
  5.    
  6.      if (array_key_exists($indice, $array))
  7.          {
  8.            $temp = $array[0];
  9.            $array[0] = $array[$indice];
  10.            $array[$indice] = $temp;
  11.            array_shift($array);
  12.  
  13.            for ($i=0; $i<$indice; $i++)
  14.                {
  15.                      $dummy = $array[$i];
  16.                      $array[$i] = $temp;
  17.                      $temp = $dummy;
  18.                }
  19.        }
  20.      return $array;
  21.    }
  22.  
  23. # Przykładowa tablica
  24.        $tab[0] = array("Wartosc_1-1", "Wartosc_1-2", "Wartosc_1-3"); // powtarzające sie rekordy [0]
  25.        $tab[1] = array("Wartosc_2-1", "Wartosc_2-2", "Wartosc_2-3");
  26.        $tab[2] = array("Wartosc_3-1", "Wartosc_3-2", "Wartosc_3-3");
  27.        $tab[3] = array("Wartosc_1-1", "Wartosc_1-2", "Wartosc_1-3"); // powtarzające sie rekordy [3]
  28.  
  29. #Wywołanie funkcji dla wybranej wartości przekazanej w zmiennej $_GET[] z tablicy $tab
  30.        for($i=0; $i<count($tab); $i++)
  31.        {
  32.            if($_GET['wartosc']==$tab[$i][0])
  33.                {
  34.                    $new_tab = DelRow($tab, $i);
  35.                }
  36.        }
  37.  
  38. # Sprawdzamy skuteczność działania funkcji
  39.   echo "<pre>";
  40.  print_r($new_tab);
  41.  echo "</pre>";
  42. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.