Skocz do zawartości

[php] Odwołania do zmiennych w funkcji


SLy

Rekomendowane odpowiedzi

Mam sobie taką funkcję(w oddzielnym pliku):

function data()
{
$date = getdate();
$dzien = $date['mday'];
$miesiac = $date['mon'];
$rok = $date['year'];
$godzina = $date['hours'];
$minuta = $date['minutes'];
if ($miesiac < 10)
{
$miesiac = '0'.$miesiac;
}
if ($minuta < 10)
{
$minuta = '0'.$minuta;
}
$date = $dzien.'.'.$miesiac.'.'.$rok.' '.$godzina.':'.$minuta;
}

Sama w sobie działa, ładnie generuje datę i godzinę. Teraz w innym pliku chciałbym wyświetlić datę i robie to tak:

include "../functions.php";
...
data();
echo $date;

Oczywiście nie działa :P W jaki sposób mogę się odwołać do zmiennej w funkcji? :unsure:

Odnośnik do komentarza
Udostępnij na innych stronach

function data()
{   
  $date = getdate();
  $dzien = $date['mday'];
  $miesiac = $date['mon'];
  $rok = $date['year'];
  $godzina = $date['hours'];
  $minuta = $date['minutes'];

  if ($miesiac < 10)
  {
     $miesiac = '0'.$miesiac;
  }

  if ($minuta < 10)
  {
     $minuta = '0'.$minuta;
  }

  $date = $dzien.'.'.$miesiac.'.'.$rok.' '.$godzina.':'.$minuta;

  echo $date;
}

include "../functions.php";
...
data();

Sorka za porządek =P

Odnośnik do komentarza
Udostępnij na innych stronach

Ugh ...

function data()
{   
 $date = getdate();
 $dzien = $date['mday'];
 $miesiac = $date['mon'];
 $rok = $date['year'];
 $godzina = $date['hours'];
 $minuta = $date['minutes'];

 if ($miesiac < 10)
 {
    $miesiac = '0'.$miesiac;
 }

 if ($minuta < 10)
 {
    $minuta = '0'.$minuta;
 }

 $date = $dzien.'.'.$miesiac.'.'.$rok.' '.$godzina.':'.$minuta;

 return $date;
}

include "../functions.php";
...
$date=data();
echo $date;

Jak się nie pomyliłem to działa.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
Uh, nie działa. Woła o parametr.

Warning: date() expects at least 1 parameter, 0 given in (...)

Wtf?

Napisałeś date() zamiast data() . date to fukcja php (http://pl.php.net/manual/pl/function.date.php), wymagająca jednego parametru. Popełniłeś literówkę, nie panikuj :P

Odnośnik do komentarza
Udostępnij na innych stronach

Pamietajcie o podstawowej zasadzie, że jeśli chcecie, aby procedura (funkcja) zwracała jakąs wartość, to w przypadku procedury musi być zadeklarowany parametr wyjścia, a w przypadku funkcji musi być tak jak zrobił Tymon. Bo $data to była zmienna lokalna w funckji data() i zatem była nielokalna w głownym programie, czyli nie można było sie do niej odwołać.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Na chłopski rozum mówiąc, to wszystkie zmienne w funkcji należą tylko do funkcji, i jeżeli chcemy się odwołać do jakiejś zmiennej z reszty skryptu aby użyć jej w funkcji, należy użyć funkcji (czy jak to nazwać) global, np. global $zmienna1, $zmienna2; W przeciwnym wypadku w fukcji można sobie przypisywać do $zmienna1 co się chce a w głównym skrypcie zmienna i tak się nie zmienia.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...