Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Tasowanie tablicy inne niz shuffle
sadistic_son
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
peter13135
post
Post #2





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


array_rand zamiast shuffle ?
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





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

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


Cytat(peter13135 @ 5.08.2011, 09:57:33 ) *
array_rand zamiast shuffle ?

Nie bardzo mam pomysł jak użyć array_rand w takim kodzie:
  1. foreach ($_SESSION['quiz'] as $s){
  2. echo $s['question'].'<br />';
  3.  
  4. foreach($s as $skey => $sval){
  5. if($skey != 'id' && $skey!='question'){
  6. echo $sval.'<input type="radio" name="'.$s['id'].'" value="'.$sval.'" /><br />';
  7. }
  8. }
  9. }

Cytat(skowron-line @ 5.08.2011, 10:00:01 ) *
A nie możesz własnej funkcji napisać.
No właśnie.... ANY IDEAS ?

Cytat(smietek @ 5.08.2011, 10:00:14 ) *
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
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(sadistic_son @ 5.08.2011, 09:09:59 ) *
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
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 03:11