![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 0 Dołączył: 23.08.2007 Skąd: Częstochowa/Dubidze Ostrzeżenie: (70%) ![]() ![]() |
mam taki problem, chce zeby mi wyswietlilo zmienne w losowej kolejnosci. np. mam 10 zmiennych o roznych nazwach i chce zeby mi wyswietlilo wszystkie w losowej kolejnosci ale tak zeby sie nie powtarzaly. z tym ze one beda umieszczone wczesniej w tablicy i nie bede znal ich nazwy bo jeszcze wczesniej przed wstawieniem danej zmiennej do tablicy tez beda losowane ktora ze zmiennych ma sie tam znajdowac.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat z tym ze one beda umieszczone wczesniej w tablicy i nie bede znal ich nazwy Manual nie gryzie: wejdź do manuala, dział tablice i przejrzyj sobie co tam jest. Nazywa się to bodajże array_rand, ale glowy nie dam. ps: przenosze |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 3 Dołączył: 3.01.2008 Skąd: PHP Planet Ostrzeżenie: (0%) ![]() ![]() |
Pewnie chodzi o coś takiego....
Kod <?php
$tablica_do_losowania = array("1", "2", "3", "4", "5","6","7","8","9","10"); function ReallyRandomArray($input){ srand((float) microtime() * 10000000); $rand_keys = array_rand($input, count($input)); $res = array(); if(count($input) > 1){ for($a=0;$a<count($input);$a++){ $res[] = $input[$rand_keys[$a]]; } } else{ $res[] = $input[$rand_keys]; } return $res; } // odwołanie $a = ReallyRandomArray($tablica_do_losowania); // sprawdzenie echo "<pre>"; print_r($a); echo "</pre>"; ?> |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Sorki a czy tak nie jest krocej i szybciej??
---------------------------------------------EDIT-------------------------------------------- Zeby nie bylo ze nie dziala albo cos oto wynik na localhoscie: Cytat 3670281549
Ten post edytował marcio 4.01.2008, 11:46:04 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 3 Dołączył: 3.01.2008 Skąd: PHP Planet Ostrzeżenie: (0%) ![]() ![]() |
Sorki a czy tak nie jest krocej i szybciej?? Nie chodzi o to żeby było krócej, ale o to żeby była większa 'niepowtarzalność' wygenerowanych wyników Jak wiadomo samo rand,shuffle etc. niezbyt dobrze sobie z tym radzi. oto wyniki 5 losowań mojej propozycji - zwrócone jako Array() a nie String Kod Array
( [0] => 10 [1] => 2 [2] => 7 [3] => 6 [4] => 8 [5] => 4 [6] => 9 [7] => 1 [8] => 3 [9] => 5 ) Array ( [0] => 9 [1] => 4 [2] => 2 [3] => 7 [4] => 8 [5] => 6 [6] => 5 [7] => 3 [8] => 10 [9] => 1 ) Array ( [0] => 4 [1] => 8 [2] => 7 [3] => 10 [4] => 6 [5] => 1 [6] => 3 [7] => 2 [8] => 9 [9] => 5 ) Array ( [0] => 8 [1] => 6 [2] => 2 [3] => 5 [4] => 10 [5] => 1 [6] => 4 [7] => 9 [8] => 7 [9] => 3 ) Array ( [0] => 5 [1] => 2 [2] => 8 [3] => 10 [4] => 9 [5] => 6 [6] => 4 [7] => 7 [8] => 3 [9] => 1 ) Ten post edytował CrazyProgrammer 4.01.2008, 13:40:26 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
NO i nie rozumiem w czym problem?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 3 Dołączył: 3.01.2008 Skąd: PHP Planet Ostrzeżenie: (0%) ![]() ![]() |
NO i nie rozumiem w czym problem? Na mój gust to obydwa skrypty są dobre (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Mój zwraca ARRAY, a Twój String, w zależności do czego autor postu bedzie potrzebował skryptu to ma gotowe rozwiązanie w 2 wersjach (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Pozdrawiam |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
No masz racje w sumie autor nie napisal jaki chce wynik ;p
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Mój zwraca ARRAY, a Twój String @CrazyProgrammer od kiedy funkcja shuffle" title="Zobacz w manualu PHP" target="_manual zwraca
Cytat array(10) { [0]=> string(1) "6" [1]=> string(1) "7" [2]=> string(1) "5" [3]=> string(1) "2" [4]=> string(1) "1" [5]=> string(1) "3" [6]=> string(1) "9" [7]=> string(1) "0" [8]=> string(1) "8" [9]=> string(1) "4" } Na mój gust to obydwa skrypty są dobre (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Po co wymyślać koło na nowo?-- EDIT Shuffle - wynik jest oczywiście tablicą... Shuffle przypisuje nowe klucze - nie zwraca owej wartości. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
@JaroPHP,crazyprogrammer wlasnie napisal ze shuffle zwraca string a nie tablice (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 3 Dołączył: 3.01.2008 Skąd: PHP Planet Ostrzeżenie: (0%) ![]() ![]() |
@CrazyProgrammer od kiedy funkcja shuffle" title="Zobacz w manualu PHP" target="_manual zwraca tablicę. Napisałem dokładnie odwrotnie, na dodatek w mojej funkcji nie użyłem shuffle tylko srand i array_rand tak więc moja funkcja zwraca ARRAY(); co jest zgodne z prawdą! Natomiast kod @marcio używa funkcji shuffle i zwraca String - co też napisałem! Wkleił Pan przykład kodu od @marcio i pokazał wyniki działania mojego skryptu. Proszę dokładniej czytać posty. Pozdrawiam Ten post edytował CrazyProgrammer 5.01.2008, 17:10:39 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
@CrazyProgrammer - czytam posty dokładnie. Lecz w trakcie pisania wkradł się błąd. Otóż shuffle nie zwraca ani Stringa, ani Array-a (stąd ów błąd), tylko miesza klucze w tablicy, która jest argumentem. Ale wynikiem działania shuffle jest tablica (array), nie łańcuch (string).
Cytat tak więc moja funkcja zwraca ARRAY(); co jest zgodne z prawdą! Ani razu nie podałem tego wątpliwości.Cytat Natomiast kod @marcio używa funkcji shuffle i zwraca String - co też napisałem! Tak napisałeś, ale tutaj @CrazyProgrammer jesteś w błędzie.Cytat Wkleił Pan przykład kodu od @marcio i pokazał wyniki działania mojego skryptu. Nic z tych rzeczy. Wynik przedstawiony w moim poście odnosi się do kodu, który również jest tam przedstawiony. Proponuje na przyszłość sprawdzać kod (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .Natomiast dlaczego @marcio ma Stringa - bo drukuje elementy (pętla for" title="Zobacz w manualu PHP" target="_manual i echo" title="Zobacz w manualu PHP" target="_manual), nic więcej. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 3 Dołączył: 3.01.2008 Skąd: PHP Planet Ostrzeżenie: (0%) ![]() ![]() |
Nie chodzi w moim stwierdzeniu o to w jakiej postaci zwraca funkcja shuffle, lecz
'mówiąc' funkcja mam na myśli wynik końcowy kodu php i w jakiej postaci zwraca dane. Nie na miejscu jest łapanie za słówka. Cytat Otóż shuffle nie zwraca ani Stringa, ani Array-a (stąd ów błąd), tylko miesza klucze w tablicy, która jest argumentem. Ale wynikiem działania shuffle jest tablica (array), nie łańcuch (string). Ani razu nie podałem tego wątpliwości. Tak napisałeś, ale tutaj @CrazyProgrammer jesteś w błędzie. Nie jestem w błędzie - napisałem Cytat Natomiast kod @marcio używa funkcji shuffle i zwraca String nie napisałem funkcja shuffle tylko kod - a to jest różnica ! Cytat Nic z tych rzeczy. Wynik przedstawiony w moim poście odnosi się do kodu, który również jest tam przedstawiony. Proponuje na przyszłość sprawdzać kod (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Nie zgadzam się z Tobą wynik @marcio to 3670281549 a ten długi jest mój - wiem przecież doskonale,bo sam dałem te wyniki z mojego skryptu. Zobacz co pisze nad tymi wynikami. cyt. oto wyniki 5 losowań mojej propozycji - zwrócone jako Array() a nie String i podpisane CrazyProgrammer Cytat Natomiast dlaczego @marcio ma Stringa - bo drukuje elementy (pętla for" title="Zobacz w manualu PHP" target="_manual i echo" title="Zobacz w manualu PHP" target="_manual), nic więcej. Przecież mówię,że chodzi o to co zwraca cały skrypt/kod a nie konkretna funkcja. Nie wiem dlaczego tak się uczepiłeś. Nie analizujemy tu konkretnej funkcji PHP tylko całość kodu. Niech lepiej Internauci ocenią kto ma rację (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Zresztą po co sie nawzajem czepiać, skoro problem z tematu postu został rozwiązany. Pozdrawiam |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Nie chodzi w moim stwierdzeniu o to w jakiej postaci zwraca funkcja shuffle, lecz Jeżeli uraziłem - sorry. Nie chcę "łapać za słówka", lecz wyprowadzać z błędu.'mówiąc' funkcja mam na myśli wynik końcowy kodu php i w jakiej postaci zwraca dane. Nie na miejscu jest łapanie za słówka. Piszesz, że masz na myśli całościowy kod - w takim razie, obydwa zwracają Stringa - Ty używasz print_r" title="Zobacz w manualu PHP" target="_manual, @marcio echo" title="Zobacz w manualu PHP" target="_manual. Racja, Ty napisałeś funkcję, która zwraca Array, lecz @marcio użył funkcji shuffle" title="Zobacz w manualu PHP" target="_manual, której wynikiem jest również Array. Przecież mówię,że chodzi o to co zwraca cały skrypt/kod a nie konkretna funkcja. Jak pokazałem powyżej - nijak ma się to do Twojego kodu, który w efekcie drukuje tablicę (więc na końcu jest String).Nie wiem dlaczego tak się uczepiłeś. Nie analizujemy tu konkretnej funkcji PHP tylko całość kodu. Cytat Cytat Nic z tych rzeczy. Wynik przedstawiony w moim poście odnosi się do kodu, który również jest tam przedstawiony. Proponuje na przyszłość sprawdzać kod (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Nie zgadzam się z Tobą wynik @marcio to 3670281549 a ten długi jest mój - wiem przecież doskonale,bo sam dałem te wyniki z mojego skryptu. Mój kod jest podobny do kodu @marcio, ale inny - dlatego wynik jest taki jak Twój (ale nie Twój). Cytat Zresztą po co sie nawzajem czepiać, skoro problem z tematu postu został rozwiązany. Z tym sie zgadzam, ale nie jest moim celem "czepianie się". Nie chcę, aby ktoś przeczytał ów wątek i stwierdził, że shuffle" title="Zobacz w manualu PHP" target="_manual zwraca Stringa.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 3 Dołączył: 3.01.2008 Skąd: PHP Planet Ostrzeżenie: (0%) ![]() ![]() |
Ok, postaram się wklejać bardziej opisowe komentarze wewnątrz kodu,
żeby uniknąć nieścisłości by było wiadomo do czego wykorzystujemy daną funkcja php w danej linii kodu, czasem bowiem potrzebne jest przekształcenie/zagnieżdżenie funkcji w taki sposób, aby zwróciła wyniki w zupełnie odmienny sposób - niż ten z manuala PHP. i stąd te nieścisłości. Skrypty specjalnie piszę 'jakby na około - lecz zgodne z logiką', ale chodzi mi o to, aby początkujący programista mógł sam przeanalizować kod [ skrypt ], i proszę sobie wyobrazić jaki będzie szczęśliwy,gdy zrozumie zasadę działania takiego mechanizmu, i sam będzie w stanie udoskonalić swój kod - a nawet napisać lepszy. Nie chodzi przeciez żeby podkładać 'gotowce', lecz żeby czegoś nauczyć. Myślę,że pomoże to początkującym zrozumienie teorii w praktyce, która bywa czasem zupełnie inna niz teoria... Pozdrawiam CrazyProgrammer |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Zgadzam sie z przedmowca teoria != praktyka
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Ok, postaram się wklejać bardziej opisowe komentarze wewnątrz kodu, żeby uniknąć nieścisłości by było wiadomo do czego wykorzystujemy daną funkcja php w danej linii kodu, czasem bowiem potrzebne jest przekształcenie/zagnieżdżenie funkcji w taki sposób, aby zwróciła wyniki w zupełnie odmienny sposób - niż ten z manuala PHP. i stąd te nieścisłości. Skrypty specjalnie piszę 'jakby na około - lecz zgodne z logiką', ale chodzi mi o to, aby początkujący programista mógł sam przeanalizować kod [ skrypt ], i proszę sobie wyobrazić jaki będzie szczęśliwy,gdy zrozumie zasadę działania takiego mechanizmu, i sam będzie w stanie udoskonalić swój kod - a nawet napisać lepszy. Nie chodzi przeciez żeby podkładać 'gotowce', lecz żeby czegoś nauczyć. Myślę,że pomoże to początkującym zrozumienie teorii w praktyce, która bywa czasem zupełnie inna niz teoria... Pozdrawiam CrazyProgrammer @CrazyProgrammer kilka kwestii, aby nie było nieporozumień: - nie mam zamiaru nikomu dogryzać, tylko staram się wyjaśniać niejasności - a takowe (przynajmniej z mojego punktu widzenia) sie pojawiły, - pisanie gotowców - jestem zdecydowanym przeciwnikiem takiego rozwiązania. Dodatkowo - nic w owym wątku nie napisałem, tylko dopisałem fragment do kodu już napisanego, aby było widoczne, jaki typ ma zmienna. Jednak staram się, jak już piszę - jest to dużo gorsze rozwiązanie od gotowca ("nauczonej głupoty trudno się pozbyć" mawiał jeden z moich nauczycieli. Trudno się z Nim nie zgodzić). - teoria bywa inna niż praktyka... Trudno mi się zgodzić. Dobrze zrozumiana teoria naprawdę pomaga (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 3 Dołączył: 3.01.2008 Skąd: PHP Planet Ostrzeżenie: (0%) ![]() ![]() |
- teoria bywa inna niż praktyka... Trudno mi się zgodzić. Dobrze zrozumiana teoria naprawdę pomaga (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Dobrze zrozumiana teoria naprawdę pomaga - Tak, nam znających perfekcyjnie manula i funkcje w php , i siedzących w tym od dawna,bo potrafimy wyodrębnić z niej [teorii] interesujące nas informacje. Lecz dla kogoś kto stawia pierwsze kroki w PHP nawet teoretycznie proste do wykonania skrypty - spędzają czasami w praktyce sen z powiek młodemu programiście ------------ edit ---------------------- A chcąc udowodnić że mam rację z tym 'Mój zwraca ARRAY, a Twój String', chodzi o to: Kod <?php $tablica_do_losowania = array("1", "2", "3", "4", "5","6","7","8","9","10"); function ReallyRandomArray($input) {srand((float) microtime() * 10000000); $rand_keys = array_rand($input, count($input)); $res = array(); if(count($input) > 1){ for($a=0;$a<count($input);$a++) { $res[] = $input[$rand_keys[$a]]; // pętla for przypisuje tutaj element do tablicy // tablica[element] = liczba_do_losowania[$a] } } else{ $res[] = $input[$rand_keys]; }return $res; // funkcja ReallyRandomArray(); zwraca Array } function marcio($liczby){ shuffle($liczby); $ile_liczb = count($liczby); for($tab = 0; $tab <= $ile_liczb; $tab++) { //echo($liczby[$tab]); // echo zamieniamy na $wynik - funkcja marcio(); zwraca String $wynik .= ($liczby[$tab]); // gdyby zamienić na $wynik[] = $liczby[$tab]; // wtedy funkcja marcio); zwróci Array } return $wynik; // funkcja marcio(); zwraca String } //++++++ SPRAWDZENIE +++++++// echo "Crazyprogrammer ReallyRandomArray(); - is Array?: ".is_array(ReallyRandomArray($tablica_do_losowania)); echo"<pre>"; print_r(ReallyRandomArray($tablica_do_losowania));// print_r wyświetla tablice echo "</pre>"; echo "<br>"; echo "marcio - marcio(); - is String?: ".is_string(marcio($tablica_do_losowania)); echo"<pre>"; print_r(marcio($tablica_do_losowania)); // print_r wyświetla string echo "</pre>"; ?> Po 'odpaleniu' powyższegu przykładu na serwerze, staje się jasne że miałem rację, Cytuję: Cytat(JaroPHP) Piszesz, że masz na myśli całościowy kod - w takim razie, obydwa zwracają Stringa - Ty używasz print_r, @marcio echo. Racja, Ty napisałeś funkcję, która zwraca Array, lecz @marcio użył funkcji shuffle, której wynikiem jest również Array. W powyższym przykładzie wyniki funkcji ReallyRandomArray(); oraz marcio(); są wyświetlane za pomocą print_r, U mnie [ funkcja ReallyRandomArray(); ] wynikiem jest Array a u @marcio String - zgodnie z założeniem. Funkcja print_r została użyta jedynie ,aby tylko wyświetlić wartości wyrażenia. dodatkowo w kodzie użyto is_string(); oraz is_array(); by potwierdzić moją rację. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Cytat(JaroPHP) Cytat(crazyprogrammer) Cytat Natomiast kod @marcio używa funkcji shuffle i zwraca String - co też napisałem! Tak napisałeś, ale tutaj @CrazyProgrammer jesteś w błędzie. Nie jestem w błędzie - wyjaśniam STEP BY STEP Natomiast kod @marcio używa funkcji shuffle i zwraca String - co też napisałem! Inaczej mówiąc: Skrypt @marcio tylko używa funkcji shuffle, a efektem końcowym [skryptu/kodu, a nie funkcji shuffle! ] jest wynik w postaci String i to miałem na myśli - ale można różnie zinterpretować tekst, dziwne bo przecież pisze wyraźnie cyt. Natomiast kod @marcio używa funkcji ... A po co wymyślać koło na nowo ? Żeby pokazać że można rozwiązać zagadnienie na wiele sposobów. Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/offtopic.gif) Pozdrawiam. Ten post edytował CrazyProgrammer 7.01.2008, 20:04:08 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:27 |