Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Szukam dobrego algorytmu przesuwającego elementy w tablicy
szparag33
post 7.12.2008, 22:14:04
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 27.07.2008

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


Witam

Szukam dobrego algorytmu do przesuwania elementów w tablicy, jakoś nie podobają mi się te które ja wymotuję więc postanowiłem zapytać, bo ktoś na pewno zna jakiś dobry.

  1. <?php
  2. // Funkcja przesuwajaca elementy tablicy
  3. function przesunElement( $tablica, $klucz_elementu, $nowa_pozycja ) {
  4.  
  5.    // Algorytm przesuwania elementow, ktorego szukam
  6.  
  7.    return $tablica;
  8. }
  9.  
  10.  
  11. $tablica = array(
  12.    '1' => 'rower',
  13.    '2' => 'samochód',
  14.    '3' => 'samolot',
  15.    '4' => 'diament',
  16.    '5' => 'kaczka',
  17.    '6' => 'stolik'
  18. );
  19.  
  20. // Wywolanie funkcji przesuwajacej
  21. $tablica = przesunElement( $tablica, '2', 6 );
  22. ?>


Liczę na pomoc i jakiś dobry pomysł smile.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
kwiateusz
post 7.12.2008, 22:21:01
Post #2


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




zalezy co masz na mysli czy zamienia miejscami 2 z 6ką czy 2ke przenosi na miejsce 6ki a stara 6ka staje sie 7ką
Go to the top of the page
+Quote Post
szparag33
post 7.12.2008, 22:38:37
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 27.07.2008

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


Np.: element 2 przesuwa na 6 pozycję, czyli dostajemy

  1. <?php
  2. $tablica = array(
  3.    '1' => 'rower',
  4.    '3' => 'samolot',
  5.    '4' => 'diament',
  6.    '5' => 'kaczka',
  7.    '6' => 'stolik',
  8.   '2' => 'samochód'
  9. );
  10. ?>
Go to the top of the page
+Quote Post
kwiateusz
post 7.12.2008, 23:49:53
Post #4


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




i że niby co Ci to miałoby dac? jak bedziesz chciał wyświetlić samochod to czy tablica jest tak, czy inaczej to i tak wywowałsz $tablica[2]
Go to the top of the page
+Quote Post
szparag33
post 8.12.2008, 00:05:41
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 27.07.2008

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


Że niby to:

zmiana pozycji (kolejności) elementów w tablicy.

Ten post edytował szparag33 8.12.2008, 00:15:38
Go to the top of the page
+Quote Post
kwiateusz
post 8.12.2008, 00:44:36
Post #6


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




w tablicy asocjacyjnej nic Ci to nie da bo wybierasz elementy po indeksie (kluczu) smile.gif a nie kolejnosci przekazania do zmiennej

chyba ze cala deklaracje tablicy bedziesz wyswietlał na stronie...
Go to the top of the page
+Quote Post
VGT
post 8.12.2008, 09:24:40
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

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


Cytat(kwiateusz @ 8.12.2008, 00:44:36 ) *
w tablicy asocjacyjnej nic Ci to nie da bo wybierasz elementy po indeksie (kluczu) smile.gif a nie kolejnosci przekazania do zmiennej

chyba ze cala deklaracje tablicy bedziesz wyswietlał na stronie...


Przy przejsciu przez tablice foreach'em bedzie mialo znaczenie
Go to the top of the page
+Quote Post
phpion
post 8.12.2008, 09:34:40
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Może coś takiego?
  1. <?php
  2. function przesunElement( $tablica, $klucz_elementu, $nowa_pozycja ) {
  3.  
  4.   // Algorytm przesuwania elementow, ktorego szukam
  5.  
  6.   if (isset($tablica[$klucz_elementu])) {
  7.      $tablica[$nowa_pozycja] = $tablica[$klucz_elementu];
  8.      unset($tablica[$klucz_elementu]);
  9.   }
  10.  
  11.   return $tablica;
  12. }
  13. ?>


Ten post edytował phpion 8.12.2008, 09:36:15
Go to the top of the page
+Quote Post
szparag33
post 8.12.2008, 23:47:14
Post #9





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 27.07.2008

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


@Bonastick, tak, ta zmiana kolejności będzie później odczytywana foreach'em.

@phpio, tak o coś takiego mi chodzi, tylko, że Twoja funkcja ma wadę, zastępuje (usuwa) jeden element tablicy... sprawdzałeś go?

Ten post edytował szparag33 8.12.2008, 23:48:59
Go to the top of the page
+Quote Post
phpion
post 9.12.2008, 07:59:55
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(szparag33 @ 9.12.2008, 01:47:14 ) *
@phpio, tak o coś takiego mi chodzi, tylko, że Twoja funkcja ma wadę, zastępuje (usuwa) jeden element tablicy... sprawdzałeś go?

Nie sprawdzałem ale raczej powinno działac poprawnie. Najpierw wstawia konkretny element na nową pozycję, a następnie usuwa go ze starej pozycji. W wyniku tego następuje przesunięcie danego elementu ze starej pozycji na nową.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:27