Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zmiana kolejności w tablicy
Lombi
post
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Witam,
Mam taka tablice:
  1. <?php
  2. tab = ('1', '2', '3', '4');
  3. ?>


I chce aby kiedy kod napotka na dana wartość (np.3) zamienił ją miejscami z wartością 2, abym otrzymał:
  1. <?php
  2. tab = ('1', '3', '2', '4');
  3. ?>


Teoretycznie wiem jak to zrobić, ale kurcze praktycznie nie bardzo sad.gif
  1. <?php
  2. foreach ($tab as $n => $res) {
  3. if($n == 3) {
  4. ... nie wiem co dalej...
  5. }
  6. ?>


W sumie tyle smile.gif Z góry dziękuje!


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
EdeusEx
post
Post #2





Grupa: Zarejestrowani
Postów: 49
Pomógł: 1
Dołączył: 6.04.2008

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


Chodzi Ci o sortowanie?
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #3





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

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


raczej to sortowanie nie jest bo sortowanie polega na uporzadkowaniu po kolei wedlug jakiegos klucza, a nie na wyrywki, ze 2 zamienia sie z 3 czy jakos inaczej
Go to the top of the page
+Quote Post
bmL
post
Post #4





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


  1. <?php
  2. for($i=0; $i < count($tab); $i++)
  3. {
  4. if($tab[$i]=3)
  5. {
  6. $temp = $tab[2];
  7. $tab[2] = $tab[$i];
  8. $tab[$i] = $temp;
  9. //albo
  10. $temp = $tab[$i-1];
  11. $tab[$i-1] = $tab[$i];
  12. $tab[$i] = $temp;
  13. }
  14. }
  15. ?>

Może coś takiego nie wiem do końca jaki jest cel tongue.gif

Ten post edytował bmL 11.05.2008, 01:42:07


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


http://www.php.net/uksort


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #6





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

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


dr bonzo: uksort sortuje z tego co pamietam wg kluczu w tablicy, a w tej tablicy tego nie ma, chyba żeby tablica wygladała tak:
  1. <?php
  2. $tablica = array(
  3. '1' => 1,
  4. '2' => 3,
  5. '3' => 2,
  6. '4' => 4,
  7. );
  8. ?>

i wtedy uksort ma sens
Go to the top of the page
+Quote Post
Lombi
post
Post #7





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


No proszę jakie zainteresowanie tongue.gif
A poważnie to dziękuje za odpowiedzi panowie. Najbardziej przypadł mi do gusty sposób bmL-a!
Na tej podstawie zrobiłem tak:
  1. <?php
  2. $tab = array('m1', 'm2', 'm3', 'm4');
  3.  
  4. foreach($tab as $n => $res) {
  5. if($res[$n] == 2) {
  6. $temp[$n-1] = $tab[$n];
  7. $temp[$n] = $tab[$n-1];
  8. } else {
  9. $temp[$n] = $tab[$n];
  10. }
  11. }
  12.  
  13. foreach($tab as $res) {
  14. echo $res;
  15. }
  16.  
  17. foreach($temp as $res) {
  18. echo '<br />'.$res;
  19. }
  20. ?>


Działa dobrze ale tylko dla $res[$n] == 2. Dlaczego?

Ten post edytował Lombi 11.05.2008, 11:24:42


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


@Mlodycompany:
1. jak pisalem posta to nie wiedzialem co on chce osiagnac (w przykladowym kodzie podal porownywanie indeksow tablic
  1. <?php
  2. foreach ($tab as $n => $res) {
  3. if($n == 3) { // ooo, tutaj :)
  4. ... nie wiem co dalej...
  5. }
  6. ?>


to myslalem ze mu o sortowanie wg kluczow chodzi

2.
Cytat
uksort sortuje z tego co pamietam wg kluczu w tablicy, a w tej tablicy tego nie ma

- tak: sortuje po kluczu
- nie: sprawdz sobie print_r( array( 1, 2,3,4 ) ); winksmiley.jpg


@Lombi: co z czym chcesz zamieniac?
2ke z 3ka (element o wartosci 2 z ... 3), czy 3ke z poprzednim elementem, czy 2ke z poprzednim?questionmark.gif


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Lombi
post
Post #9





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Jak zwykle zamotałem! Sytuacja wygląda następująco:
Mama tablice:
  1. <?php
  2. $tab = array('m1', 'm2', 'm3', 'm4');
  3. ?>


Skrypt sprawdza ile jest elementów w tablicy i dla elementu drugiego i kolejnych jest przycisk przesuń w górę. Po naciśnięciu ma zamienić kolejność elementów, nie ich wartość tylko kolejność. Przyjmijmy za klikam w link odpowiedzialny za przesunięcie w górę m2, po wykonaniu skryptu mam otrzymać tablicę z m2 na pierwszej pozycji m1 na drugiej i dalej tak jak było czyli:
  1. <?php
  2. $tab = array('m2', 'm1', 'm3', 'm4');
  3. ?>


Przy tej samej akcji dla m3 mam otrzymać
  1. <?php
  2. $tab = array('m1', 'm3', 'm2', 'm4');
  3. ?>


itd...

Mam nadzieje że zrozumiale napisałem.

// TROCHĘ PÓŹNIEJ
Poradziłem sobie. Jak sie okazało wcześniej w kodzie była literówka smile.gif

Ten post edytował Lombi 11.05.2008, 23:54:58


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
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 Aktualny czas: 19.08.2025 - 04:14