Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wywoływanie losowej funkcji
banialol
post 7.05.2007, 23:06:19
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.03.2007

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


Mam 10 funkcji, ktore tam np nazywaja sie:

cyfra0();
cyfra1();
cyfra2();
cyfra3();
cyfra4();
cyfra5();
cyfra6();
cyfra7();
cyfra8();
cyfra9();

Zabardzo nie wiem jak zrobic zeby tylko jedną wywolać, kombinowalem na różne sposoby ale cały czas lipa.
Prosze o jakas rade.

[+] edit
Przenoszę na Przedszkole.
---
~strife
Go to the top of the page
+Quote Post
strife
post 7.05.2007, 23:11:05
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


  1. <?php
  2. function cyfra1() { return 1; } 
  3. function cyfra2() { return 2; } 
  4. function cyfra3() { return 3; } 
  5. function cyfra4() { return 4; } 
  6. function cyfra5() { return 5; } 
  7. function cyfra6() { return 6; } 
  8.  
  9.  
  10. $rand = rand(1, 6);
  11.  
  12. $value = call_user_func('cyfra' . $rand );
  13. echo $value;
  14. ?>


winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
banialol
post 7.05.2007, 23:17:44
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.03.2007

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


zrobilem tak:

  1. <?php
  2. function cyfra1() { return 1; } 
  3. function cyfra2() { return 2; } 
  4. function cyfra3() { return 3; } 
  5. function cyfra4() { return 4; } 
  6. function cyfra5() { return 5; } 
  7. function cyfra6() { return 6; } 
  8. function cyfra7() { return 7; } 
  9. function cyfra8() { return 8; } 
  10. function cyfra9() { return 9; } 
  11. function cyfra10() { return 10; } 
  12.  
  13. $rand = rand(1, 10);
  14.  
  15. $value = call_user_func('cyfra' . $rand );
  16. echo $value;
  17. ?>



i niedziala poprawnie:
wyskakuje taki błąd:

Fatal error: Cannot redeclare cyfra1() (previously declared in /ho....php:26) in /ho.....i/index.php on line 186
Go to the top of the page
+Quote Post
strife
post 7.05.2007, 23:23:15
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Błąd nie dotyczy tego kawałka kodu:

Cytat
Fatal error: Cannot redeclare cyfra1() (previously declared in /ho....php:26) in /ho.....i/index.php on line 186


Sprawdź linijkę 186 w pliku index.php, a także ten plik previously declared in /ho....php:26. Czytanie błędów to podstawa. Chodzi o to , że ta funkcja została już gdzieś wczytana, taka konstrukcja powoduje błąd:

  1. <?php
  2. function dupa() {
  3.  
  4. }
  5. function dupa() {
  6.  
  7. }
  8. ?>


Pozdrawiam.


--------------------
Go to the top of the page
+Quote Post
banialol
post 7.05.2007, 23:27:11
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.03.2007

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


gdy daje samo:

  1. <?php
  2. $rand = rand(1, 10);
  3. $value = call_user_func('cyfra' . $rand );
  4. echo $value;
  5. ?>


niby sie wczytuje kod HTML zawarty w funkcji, ale juz dzialania na tym kodzie takie:

  1. <?php
  2. function cyfra9(){
  3. if (isset($_POST["cyfry"])){
  4. echo ('
  5. <form action="index.php" method="POST">0&nbsp;1&nbsp;2&nbsp;3&nbsp;4&nbsp;5&nbsp;&nbsp;6&nbsp;7&nbsp;8<input type="text" size=3 name="ile9"/><br>
  6. <br>
  7. <input type="submit" value="ok" name="ok9"/>
  8. </form>');}
  9. $ile9 = $_POST["ile9"];
  10. if (isset($_POST["ok9"])){
  11. if (empty($ile9))
  12. echo "Nic nie wpisales.";
  13. else{
  14. if ($ile9=="9")
  15. echo "BRAWO!!!";
  16. else {echo "Naucz sie liczyc";}}}}
  17. ?>


niedzialaja.
P.S. zaczynam robic stronke dla dzieci o matematyce

Ten post edytował banialol 7.05.2007, 23:39:59
Go to the top of the page
+Quote Post
strife
post 7.05.2007, 23:55:22
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Wydaje mi się, że tutaj trzeba użyć innego rozwiązania, a mianowicie jeśli masz kilkanaście prawie identycznych funkcji to czy nie lepiej, stworzyć jedną funkcję, a następnie podawać argumenty dla niej, wygląda to w ten sposób:

  1. <?php
  2. function dupa( $foo, $boo ) {
  3. echo 'SUMA: Wybrales' . $foo . ' a takze: ' . $boo . ' co daje = ' . ( $foo + $boo );
  4. }
  5. $liczba1 = 4;
  6. $liczba2 = 10;
  7. dupa( $foo, $boo );
  8. ?>


Opisz bardziej swój problem, co dokładnie chcesz osiągnąć ponieważ uważam, ze użycie call_user_func" title="Zobacz w manualu PHP" target="_manual nie będzie w Twoim wypadku trafione.

PS. Życzę powodzenia : )


--------------------
Go to the top of the page
+Quote Post
banialol
post 7.05.2007, 23:58:54
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.03.2007

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


Strife to nie ma dzialac na zasadzie dodawania tylko tak:
http://www.orzech99.webd.pl/bania/dzieci/index.php
Go to the top of the page
+Quote Post
strife
post 8.05.2007, 00:05:00
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Cytat(banialol @ 8.05.2007, 00:58:54 ) *
Strife to nie ma dzialac na zasadzie dodawania tylko tak:
http://www.orzech99.webd.pl/bania/dzieci/index.php


Rozumiem, ale ja Ci podałem tylko przykład, że nie musisz pisać kilkunastu prawie identycznych funkcji tylko możesz przekazywać pewne parametry poprzez argumenty funkcji. Napisz jak chcesz, aby ten skrypt działał, narazie domyślam się, że chcesz aby dzieciak miał powiedzmy 10 zadań do wpisania liczb, jedno pod drugim w miarę uzupełniania tak ?

Jeśli mam rację to nadal uważam, że można to stworzyć dużo prościej, przy użyciu jednej funkcji nie 10-ciu ( czyli tyle ile zakładasz, że będzie zadań ). Najprościej mi to będzie zilustrować przykładem:

Po co pisać:
  1. <?php
  2. function cyfra1() { echo 1; }
  3. function cyfra2() { echo 2; }
  4. // .. etc.
  5. // jak można:
  6. function cyfra($var) { echo $var } 
  7. // cyfra(2); cyfra(2123)
  8. ?>


Jeśli Cię źle zrozumiałem to przepraszam, napisz może trochę jaśniej co chcesz osiągnąć to Ci lepiej pomogę.

Pozdrawiam.


--------------------
Go to the top of the page
+Quote Post
banialol
post 8.05.2007, 00:11:34
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.03.2007

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


OK

Mam juz te 10 funkcji (sral pies jak napisane, wazne narazie ze dziala) i potrzebuje 1 funkcje z tych 10 losowo wyswietlic.

gdy stosuje:
  1. <?php
  2. $rand = rand(1, 10);
  3. $value = call_user_func('cyfra' . $rand );
  4. echo $value;
  5. ?>


niby sie wyswietla 1 losowo funkcja ale tak jakby kod PHP w niej nie dziala,
gdy ustawiam recznie bez tego losujacego skryptu np echo cyfra3(); to dziala wszystko idealnie az milo.
Go to the top of the page
+Quote Post
Grzyw
post 8.05.2007, 00:17:48
Post #10





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


Strife ma rację. Banialol, podałeś tutaj przykładowy kod funkcji czy faktycznie one mają za zadanie zwracać kolejne liczby? Jeżeli tak to dokładnie wygląda w Twoim skrypcie, to faktycznie skrypt:
  1. <?php
  2. function cyfra($var) { echo $var }
  3. cyfra(rand(0,9));
  4. ?>
rozwiązuje problem...


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
tomaszq
post 8.05.2007, 15:03:30
Post #11





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 14.09.2006

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


  1. <?php
  2. $losowa = rand(1,6);
  3.  
  4. switch($losowa)
  5. {
  6. case 1: funkcja1();break;
  7. case 2: funkcja2();break;
  8. case 3: funkcja3();break;
  9. case 4: funkcja4();break;
  10. // .....
  11. };
  12. ?>
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 Wersja Lo-Fi Aktualny czas: 22.06.2025 - 03:19