Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zmienna globalna
jarek0203
post 11.02.2014, 13:25:58
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.01.2013

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


Witam. Mam funkcje która nic nie zwraca, jedynie wysyła dane do bazy danych:
Chce zrobić coś takiego:

  1. function zmien($nr, ...){
  2. .
  3. .
  4. .
  5.  
  6. $liczba=$nr;
  7.  
  8. }
  9.  
  10.  
  11. $zmienna=$liczba;
  12. echo $zmienna;


Co zrobić aby zmienna $liczba była widoczna globalnie? próbowałem z global, GLOBALS[] i static. Nic nie działa.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Turson
post 11.02.2014, 13:30:55
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. function zmien($nr){
  2. return $nr;
  3. }
  4.  
  5.  
  6. $zmienna=zmien(1);
  7. echo $zmienna;
Go to the top of the page
+Quote Post
jarek0203
post 11.02.2014, 14:45:21
Post #3





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.01.2013

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


Jest jakaś inna opcja? W moim przypadku wszystko się sypie bo pomijam resztę zmiennych w funkcji

  1. function zmien($id_m,$id_f,$nr,$kontrahent,$ilosc,$material,$data,$cena)


i wywala mi błędy Warning: Missing argument 2 for faktura::zmien(), called in C:\xampp\htdocs\index.php on line 223 and defined in C:\xampp\htdocs\faktura.php on line 12
dla każdego argumentu.
Go to the top of the page
+Quote Post
Turson
post 11.02.2014, 14:55:38
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jak chcesz resztę pomijać to po co ona jest? Ewentualnie ustaw ją jako $id_f=null,$nr=null itd.
Go to the top of the page
+Quote Post
jarek0203
post 11.02.2014, 23:41:53
Post #5





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.01.2013

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


Nie chce pomijać reszty. Po prostu w moim przypadku return nie zdaje egzaminu. Potrzebuję tylko wartości zmiennej $nr po za funkcją.
Go to the top of the page
+Quote Post
adeptofvoltron
post 12.02.2014, 00:00:41
Post #6





Grupa: Zarejestrowani
Postów: 51
Pomógł: 2
Dołączył: 4.09.2013

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


istnieją 2 nieładne rozwiązania:

  1. $liczba;
  2.  
  3. function zmie($nr){
  4. global $liczba;
  5. $liczba=$nr;
  6. }
  7.  
  8. zmie(1);
  9. echo $liczba;


a drugie:
  1. $GLOBALS['x']=5; .
  2. function zmien($nr){
  3. $liczba=&$GLOBALS['x'];
  4. $liczba=$nr;
  5. }
  6.  
  7. zmien('ala ma kota');
  8.  
  9. echo $GLOBALS['x'];


Tylko jeszcze raz, takie rozwiązania sa niebezpieczne. mogą ci łatwo wpłynąć na zmianne w innej cześci programu jeśli będzie kolizja nazw. I nawet tego nie zauważysz+zajmuje ci odrobinę miejsca w pamięci(co jest raczej mało ważne)

Edyta:
Chociaż konto mam tu od dawna, to działam na tym forum od niedawna. Tak więc pytanie do modów. W przypadku jak chce dopisac coś nowego lepiej widziana jest edycja ostatniego postu. Czy zakładac nowy post(na róznych forach różnie z tym bywa)

A teraz właściwie rozwiązanie o którym nie napisałem wczesniej..a w sumie będzie najładniejsze. Wrzuć tę funkcję w jakiś obiekt + pole w tym obiekcie.
  1. class foo{
  2. public $liczba;
  3.  
  4. function zmien($nr){
  5. $this->liczna=$nr;
  6. }
  7. }
  8.  
  9. $x = new foo();
  10. $x->zmien(5);
  11. echo $x->liczba;


Ten post edytował adeptofvoltron 12.02.2014, 00:21:25
Go to the top of the page
+Quote Post
jarek0203
post 12.02.2014, 00:27:51
Post #7





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.01.2013

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


Mam funkcje w klasie

  1. class faktura{
  2. function zmien{
  3.  
  4. }
  5. }


Nie działa:
Notice: Undefined property: faktura::$liczba in C:\xampp\htdocs\index.php on line 224

Funkcja zmien przyjmuje wiecej parametrów:
  1. function zmien($id_m,$id_f,$nr,$kontrahent,$ilosc,$material,$data,$cena)


Tak wrzucam dane do funkcji
  1. case 'zmien':
  2. $fk->zmien(
  3. $_POST['id_m'],
  4. $_POST['id_f'],
  5. $_POST['nr'],
  6. $_POST['kontrahent'],
  7. $_POST['ilosc'],
  8. $_POST['material'],
  9. $_POST['data'],
  10. $_POST['cena']);
  11. break;


Może to coś pomoże.

Ten post edytował jarek0203 12.02.2014, 00:41:01
Go to the top of the page
+Quote Post
adeptofvoltron
post 12.02.2014, 00:48:59
Post #8





Grupa: Zarejestrowani
Postów: 51
Pomógł: 2
Dołączył: 4.09.2013

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


liczba jest statyczna?

twój kod nie wiele wnosi do tematu. bo to co zrozumiałem że chcesz osiągnąć już wskazałem.

ale mogę doradzić byś wpierw zwalidował dane skoro przechodzą postem
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: 31.07.2025 - 07:56