Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Powtarzające się rekordy w tablicy. Przeindeksowanie?
perhydrol
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.12.2006

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


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

Ten post edytował perhydrol 19.03.2009, 20:16:43
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Hmm array_slice()" title="Zobacz w manualu PHP" target="_manual
Lub unset($tablica['index']);
Go to the top of the page
+Quote Post
tomsi
post
Post #3





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

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


http://php-manual.skryptoteka.pl/function....diff-assoc.html
http://php-manual.skryptoteka.pl/function....y-diff-key.html
http://php-manual.skryptoteka.pl/function.array-diff.html
http://php-manual.skryptoteka.pl/function.array-unique.html


A w ogóle to tutaj masz fajnie opisane tablice i funkcje do nich:
http://php-manual.skryptoteka.pl/ref.array.html
Go to the top of the page
+Quote Post
perhydrol
post
Post #4





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.12.2006

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


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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował perhydrol 19.03.2009, 19:52:34
Go to the top of the page
+Quote Post
tomsi
post
Post #5





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

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


Pewien nie jestem, ale może coś w tym stylu zobacz
http://webmade.org/kursy-online/przegladan...ic-kurs-php.php
Go to the top of the page
+Quote Post
b4x
post
Post #6





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


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. ?>
Go to the top of the page
+Quote Post
perhydrol
post
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.12.2006

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


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. ?>


Ten post edytował perhydrol 21.03.2009, 14:21:36
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: 11.10.2025 - 17:41