Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Losowa kolejność w tablicy, Jak zachować wszystkie wartości?
Thrandvil
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 24.07.2008

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


Witam,
Załóżmy, że mam prostą tablicę, na którą składają się cyfry od 0 do 4 i chcę te cyfry poukładać w losowej kolejności, jednak tak, żeby każda występowała tylko raz
  1. <?php
  2. shuffle($tablica)
  3. ?>

zwraca niestety powtarzające się wartości. Jak można temu zaradzić?
A może jest jakiś dużo prostszy sposób na uzyskanie takich losowo ułożonych liczb, a ja za bardzo kombinuje?
Z góry dziękuję za każdą pomoc smile.gif
Go to the top of the page
+Quote Post
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


O ile mi wiadomo, to shuffle() robi dokładnie to, co napisałeś - nadaje elementom tablicy losową kolejność. Sprawdź sam:

  1. <?php
  2. $array = array(0, 1, 2, 3, 4);
  3. shuffle($array);
  4. var_dump($array);
  5. ?>


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
Thrandvil
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 24.07.2008

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


hm... ciekawe ... więc błąd muszę mieć gdzieś wcześniej ... tak czy inaczej, dzięki.
Go to the top of the page
+Quote Post
Moli
post
Post #4





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

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


  1. <?php
  2. public function shuffle($array,$sArray=false)
  3. {
  4. $nArray  = array();
  5. $aResult  = array();
  6.  
  7. foreach($array as $key => $value)
  8. {
  9. $nArray[] = $key;
  10.  
  11. if ( $sArray and is_array($value) )
  12. $array[$key] = $this->shuffle($value,true);
  13. }
  14.  
  15. shuffle($nArray);
  16.  
  17. foreach($nArray as $key)
  18. $aResult[$key] = $array[$key];
  19.  
  20. return $aResult;
  21. }
  22. ?>
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: 21.08.2025 - 02:48