Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcje zwracnie wartosci
Forum PHP.pl > Forum > Przedszkole
mrm
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?
aleksander
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. ?>
mrm
.. a nie da sie jakos przez return-y
Kod
...return $dodawanie; return $odejmowanie;...

, i zwrocone wartosci wyciagnac z tablicy ?
ikioloak
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. ?>
mike
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. ?>
ikioloak
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. ?>
aleksander
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.
mike
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.
krzykom
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ć)
ikioloak
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. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.