Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Tasowanie tablicy inne niz shuffle
sadistic_son
post 5.08.2011, 07:30:06
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Jak potasować tablicę aby zmienić tylko kolejność wyświetlania kolejnych elementów? Funkcja shuffle zmienia pary klucz => wartość. A ja chcę ją tak potasować aby dany klucz pozostał przy swojej wartości. Czyli tylko zmienić kolejność wyświetlania tych par. Lecz problemem jest to że nie wszystkich par.
Dla przykładu print_r zwraca mi takie coś:
Kod
Array
        (
            [id] => 10
            [question] => wartosc1
            [ans1] => x1
            [ans2] => y1
            [ans3] => z1
            [ans4] => zz1
        )
Chciałbym tak potasować losowo tablicę aby id i question zostały na swoim miejscy a pozostałe wyświetlały się losowo, czyli np tak:
Kod
Array
        (
            [id] => 10
            [question] => wartosc1
            [ans4] => zz1
            [ans1] => x1
            [ans3] => z1
            [ans2] => y1

        )
Any ideas?

Ten post edytował sadistic_son 5.08.2011, 07:34:53


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
luniak
post 5.08.2011, 07:59:16
Post #2





Grupa: Zarejestrowani
Postów: 171
Pomógł: 36
Dołączył: 12.01.2008
Skąd: Puszcza Mariańska

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


tutaj range tworzy tablice[liste] wartości
W koncu twoje pola sa nazwane
ans1
ans2
...
ansx

wiec sladaja sie ze stringu: 'ans' i inta smile.gif
wiec mieszasz sobie tymi intami i tyle smile.gif

mam an dzieje ze to jest zrozumiałe ^^

wogole w ten sposob nie mieszasz w samej glownej tablicy wogole jej tak naprawdę nie sortujesz smile.gif
sortujesz sobie tylko inty do indexów smile.gif

zawsze można troche zmodyfikować ten kod :

  1. $odpowiedzi=array('ans1','ans2','ans3','ans4'); //[tablica z numerami odpowiedzi]
  2.  
  3. shuffle($odpowiedzi);
  4.  
  5. foreach($odpowiedzi as $id){echo $tablica[$id];}


ale wersja z range bedzie ciut ale to niezuwazalnei wydajniejsza bo mniej pamieci bedzie potrzebowac a i sortowanie bedzie krótsze ze względu na mniejsza ilosc znakó do porownania smile.gif

Ten post edytował luniak 5.08.2011, 08:04:22


--------------------
Jeżeli ktoś na forum Ci pomógł, możesz mu podziękować klikając w opcje "Pomógł" pod jego postem!
--------------------

Go to the top of the page
+Quote Post

Posty w temacie


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 - 23:44