![]() |
![]() |
![]()
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 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:( [id] => 10 [question] => wartosc1 [ans1] => x1 [ans2] => y1 [ans3] => z1 [ans4] => zz1 ) Kod Array Any ideas?
( [id] => 10 [question] => wartosc1 [ans4] => zz1 [ans1] => x1 [ans3] => z1 [ans2] => y1 ) Ten post edytował sadistic_son 5.08.2011, 07:34:53 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 171 Pomógł: 36 Dołączył: 12.01.2008 Skąd: Puszcza Mariańska Ostrzeżenie: (0%) ![]() ![]() |
To tu też pomogę (IMG:style_emoticons/default/tongue.gif)
Jeżeli masz stałą liczbę dopowiedzi możesz ominąć ten problem np tak: |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Sorki ale nie za bardzo rozumiem ten kod. Przecież range działa na wartościach a nie na kluczach. A wartości są zmienne i generalnie nam nie znane. Trzeba podziałać na kluczach ans1, ans2, ans3, ans4. Liczba odpowiedzi jest stała - 4.
|
|
|
![]()
Post
#4
|
|
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 (IMG:style_emoticons/default/smile.gif) wiec mieszasz sobie tymi intami i tyle (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif) sortujesz sobie tylko inty do indexów (IMG:style_emoticons/default/smile.gif) zawsze można troche zmodyfikować ten kod : 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 (IMG:style_emoticons/default/smile.gif) Ten post edytował luniak 5.08.2011, 08:04:22 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Owszem, ja to rozumiem i to działa. Ale nie o to mi chodzi. Te metody pomieszają indeksy i wartości. Po tych działaniach ans1 już nie będzie miało wartości x1 itd.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
array_rand zamiast shuffle ?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz własnej funkcji napisać.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 306 Pomógł: 32 Dołączył: 20.01.2008 Ostrzeżenie: (20%) ![]() ![]() |
Wyciągnąć daną ilość wpisów z tej tablicy, posortować je w osobnej tablicy a potem przebudować tablicę pierwotną.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
array_rand zamiast shuffle ? Nie bardzo mam pomysł jak użyć array_rand w takim kodzie:
A nie możesz własnej funkcji napisać. No właśnie.... ANY IDEAS ?Wyciągnąć daną ilość wpisów z tej tablicy, posortować je w osobnej tablicy a potem przebudować tablicę pierwotną. Nie potrzebuję przebudowywać tablicy pierwotnej, chcę tylko ją wyświetlić potasowaną, a właściwie tylko jej 4 ostatnie elementy, czyli wszystkie oprócz 2 pierwszych. I posortowanie to nie potasowanie.Panowie, czytajcie dokładnie z czym mam problem. Funkcja działająca jak shuffle tutaj nie pomoże. Ten post edytował sadistic_son 5.08.2011, 09:11:55 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie testowałem tego, więc potraktuj to jako pseudokod (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No właśnie.... ANY IDEAS ? Podziel na pól tablice i jedną część posortuj rosnąco, drugą malejąco i na koniec połącz. Edit: A jeżeli id i question ma być na 0 i 1 miejscu to odłącz je od tablicy przed sortowaniem. Ten post edytował skowron-line 5.08.2011, 09:30:41 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 18:52 |