Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcje zwracnie wartosci
mrm
post 14.01.2006, 15:42:51
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 18.06.2005
Skąd: inąd

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


przyjmijmy ze jest fukcja
Kod
fuction obliczenia ($liczba1, $liczba2) {
$dodawanie=$liczba1+$liczba2;
$odejmowanie=$liczba1-$liczba2;
}


wywolujemy funckcje
Kod
obliczenia (10,1);

jak teraz wywolać zmienne $dodawanie, $odejmowanie oddzielnie ? aby
przypisac do nowych zmiennych z zewnatrz funkcji wartosc dodawania, a do innej odejmowania, aby tak jak w przykladzie nowazmienna1 = 11, a nowazmienna2 = 9?


--------------------
'
Go to the top of the page
+Quote Post
aleksander
post 14.01.2006, 15:48:45
Post #2





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


rozdzielic to na dwie funkcje? ostatecznie mzoesz funkcje wrzucic tez do klasy wtedy bedzie
  1. <?php
  2. $oObl = new Obliczenia();
  3. $oObl->dodaj( 1, 2 );
  4. $oObl->odejmij( 1, 2 );
  5. ?>
Go to the top of the page
+Quote Post
mrm
post 14.01.2006, 15:55:18
Post #3





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 18.06.2005
Skąd: inąd

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


.. a nie da sie jakos przez return-y
Kod
...return $dodawanie; return $odejmowanie;...

, i zwrocone wartosci wyciagnac z tablicy ?


--------------------
'
Go to the top of the page
+Quote Post
ikioloak
post 14.01.2006, 15:58:31
Post #4





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


mozesz dac dodatkowy agrument funkcji. np:
  1. <?php
  2.  
  3. fuction obliczenia ($liczba1, $liczba2, $param) 
  4. {
  5.    if ($param=='+')
  6.    {
  7.       return $dodawanie=$liczba1+$liczba2; 
  8.    }
  9.    else
  10.    {
  11.       return $odejmowanie=$liczba1-$liczba2;
  12.    }
  13. }
  14.  
  15. ?>


Ten post edytował ikioloak 14.01.2006, 15:59:32
Go to the top of the page
+Quote Post
mike
post 14.01.2006, 16:00:59
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Może być tylko jeden return.
Funkcja zwraca jeden wynik.

Możesz ewentualnie tak:
  1. <?php
  2.  
  3. fuction obliczenia( $liczba1, $liczba2 )
  4. {
  5. $arrReturn = array();
  6. $arrReturn[ 'plus' ] = $liczba1 + $liczba2;
  7. $arrReturn[ 'minus' ] = $liczba1 - $liczba2;
  8.  
  9. return $arrReturn;
  10. }
  11.  
  12. $arrDziałania = obliczenia( 10 , 20 );
  13.  
  14. echo '<pre>' . print_r( $arrDziałania, true ) . '</pre>';
  15.  
  16. ?>
Go to the top of the page
+Quote Post
ikioloak
post 14.01.2006, 16:54:52
Post #6





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Cytat
Może być tylko jeden return.

Mowisz o tej funkcji ktora podalem? Wg mnie jest ona jak najbarziej poprawna. A jesli faktycznie masz racje to mozna to przeciez rozwiazac tak:
  1. <?php
  2.  
  3. fuction obliczenia ($liczba1, $liczba2, $param) 
  4. {
  5.  if ($param=='+')
  6.  {
  7. $temp=$liczba1+$liczba2; 
  8.  }
  9.  else
  10.  {
  11. $temp=$odejmowanie=$liczba1-$liczba2;
  12.  }
  13.  return $temp;
  14. }
  15.  
  16. ?>
Go to the top of the page
+Quote Post
aleksander
post 14.01.2006, 16:56:38
Post #7





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


ikioloak: Twoja funkcja była jak najbardziej poprawna. Chodzi o to, że jak parser dojdzie do returna to zatrzymuje wykonywanie funkcji. Ale jeżeli return jest w fie który się nie "spełni" to parser idzie dalej.
Go to the top of the page
+Quote Post
mike
post 14.01.2006, 17:00:34
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(mike_mech @ 2006-01-14 16:00:59)
Może być tylko jeden return.

Słowa te kierowałem do autora wątku.

A chodziło mi o to, że funkcja nie ma szans wykonać dwóch instrukcji return. Zawsze wykona się jeden (a dokłanie pierwszy z napotkanych). Co za tym idzie, Twoje funkcja jest w pożądku.
Go to the top of the page
+Quote Post
krzykom
post 14.01.2006, 17:25:36
Post #9





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 14.01.2006
Skąd: Łódź

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


Jeśli chcesz użyć tablicy, to możesz to zrobić na przykład tak:
  1. <?
  2. function obliczenia ($arg1, $arg2){
  3. $arr['plus'] = $arg1 + $arg2;
  4. $arr['minus'] = $arg1 - $arg2;
  5. return $arr;
  6. }
  7.  
  8. $tablica = obliczenia(3,2);
  9. echo $tablica['plus']." ".$tablica['minus'];
  10. ?>

Wynik:
5 1
(jak można się spodziewać)


--------------------
Go to the top of the page
+Quote Post
ikioloak
post 14.01.2006, 18:15:21
Post #10





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Inna opcja jest przekazanie funkcji referncji:
  1. <?php
  2.  
  3. function obliczenia ($liczba1, $liczba2, &$ret1, &$ret2) 
  4. {
  5. $ret1 = $liczba1+$liczba2; 
  6. $ret2 = $liczba1-$liczba2;
  7. }
  8.  
  9. obliczenia(2,4,$a,$b);
  10. print $a.' '.$b;
  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: 19.07.2025 - 17:15