Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]odczyt zmiennej z funkcji
trucksweb
post 25.05.2008, 12:33:07
Post #1





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


mam glupie pytanie i funkcje:

  1. <?php
  2. function odczyt($k) {
  3.  
  4. $k=1;
  5. }
  6. ?>


i w innym pliku odczytuje ta zmienna:
  1. <?php
  2. //wywolanie funkcji
  3. odczyt();
  4.  
  5. //zmienna
  6. if($k=1) {
  7.  
  8. ...
  9. }
  10. ?>


tylko ze cos nie dziala ? da sie to tak rozwiazac bez uzycia sesji i zmiennych globalnych ? czy tylko mozna do funkcji przeslac wartosc zmiennej a nie odczytac ?


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
Crozin
post 25.05.2008, 12:34:42
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  1. <?php
  2. function odczyt(&$k){
  3. $k = 1;
  4. }
  5.  
  6. odczyt($k);
  7.  
  8. if($k == 1){
  9.  
  10. }
  11. ?>
Go to the top of the page
+Quote Post
trucksweb
post 25.05.2008, 12:47:59
Post #3





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


tez probowalem ale nie dziala :/
nawet odczyt samej zmiennej nie przechodzi
  1. <?php
  2. echo $k;
  3. ?>


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
piotrooo89
post 25.05.2008, 12:51:16
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a tak:

  1. <?php
  2. function odczyt($k){
  3. $k = 1;
  4. }
  5.  
  6. odczyt(&$k);
  7.  
  8. if($k == 1)
  9. {
  10. echo 'ok';
  11. }
  12. ?>


--------------------
Go to the top of the page
+Quote Post
pyro
post 25.05.2008, 12:52:40
Post #5





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Poczytaj o zasięgu zmiennych

  1. <?php
  2. function odczyt($k){
  3. global $k;
  4. $k = 1;
  5. }
  6.  
  7. odczyt($k);
  8.  
  9. if($k == 1)
  10. {
  11. echo 'ok';
  12. }
  13. ?>


Ten post edytował pyro 25.05.2008, 12:54:53


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
piotrooo89
post 25.05.2008, 12:57:10
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




używając wskaźników mogę zrobić to samo co globalem... takie przyzwyczajenie z c++


--------------------
Go to the top of the page
+Quote Post
pyro
post 25.05.2008, 13:06:43
Post #7





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


a tak wogole to to powinno wygladac tak:

  1. <?php
  2. function odczyt(){
  3. global $k;
  4. $k = 1;
  5. }
  6.  
  7. odczyt();
  8.  
  9. if($k == 1)
  10. {
  11. echo 'ok';
  12. }
  13. ?>


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
trucksweb
post 25.05.2008, 13:17:58
Post #8





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


no ale teraz jest to zmienna globalna. czyli innego rozwiazania poza globalnymi i sesjami nie ma ?- tak z ciekawosci pytam


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
piotrooo89
post 25.05.2008, 13:19:26
Post #9


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




jest coś takiego jak ja zrobiłem - wskaźniki... smile.gif
choć nie sa one "oficjalne" - ale można je emulować.

Ten post edytował piotrooo89 25.05.2008, 13:21:14


--------------------
Go to the top of the page
+Quote Post
pyro
post 25.05.2008, 13:22:25
Post #10





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


piotrooo89, to co ty zrobiles jest bledne smile.gif


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
piotrooo89
post 25.05.2008, 13:25:44
Post #11


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(pyro @ 25.05.2008, 14:22:25 ) *
piotrooo89, to co ty zrobiles jest bledne smile.gif


tak ponieważ wskaźniki nie są wspierane przez php ale można to emulować tak jak ja to zrobiłem, i będzie zwracać poprawny wynik. powiedziałem że to przyzwyczajenie z c++ pyro twój sposób (ten 2) jest 100% poprawny.


--------------------
Go to the top of the page
+Quote Post
pyro
post 25.05.2008, 13:27:52
Post #12





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


tak jak ty zrobiles czyli to?
Cytat
  1. <?php
  2. function odczyt($k){
  3. $k = 1;
  4. }
  5.  
  6. odczyt(&$k);
  7.  
  8. if($k == 1)
  9. {
  10. echo 'ok';
  11. }
  12. ?>


No to to jest właśnie błędne tongue.gif

Ten post edytował pyro 25.05.2008, 13:28:20


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
piotrooo89
post 25.05.2008, 13:31:05
Post #13


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




to jak możesz pokaż co jest błędne... bo może mam jakieś złe info i chętnie zmienię swój pogląd. wynik jest poprawnie zwracany.


--------------------
Go to the top of the page
+Quote Post
pyro
post 25.05.2008, 13:32:35
Post #14





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Aż z ciekawości sprawdzę

//EDIT

rzeczywiście =/

//EDIT

już wiem dlaczego, mój błąd

Ten post edytował pyro 25.05.2008, 13:34:47


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
piotrooo89
post 25.05.2008, 13:38:24
Post #15


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




to co ty robisz jest zgodne z php tzn global... ja zaczerpnąłem z innego języka. jak już pisałem php nie ma obsługi wskaźników tylko można je emulować, a znając życie lepiej jest stosować coś co jest wspierane przez php. pozdrawiam.


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 25.05.2008, 14:40:15
Post #16





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
  1. <?php
  2. // zmienilem nazwy zmiennych dla jasnosci [dr_bonzo]
  3. function odczyt(&$k){
  4. $k = 1;
  5. }
  6.  
  7. odczyt($X);
  8.  
  9. if($X == 1){
  10.  
  11. }
  12. ?>

@truckweb: przeciez to DZIALA, 1. bo sprawdzilem, 2. bo przekazujesz $X do funkcji przez referencje, czyli odczyt() otrzyma zmienna a nie jej wartosc, dla tego mozesz zmienic wartosc $k a tym samym $X


@piotrooo89: twoje rozwiazanie KIEDYS dzialalo

odczyt(&$k);

i mozna bylo przy wywolaniu funkcji decydowac czy przekazac wartosc czy sama zmienna, teraz mozesz to okreslac TYLKO w definicji funkcji

function odczyt(&$k) {..}

no i odpal swoj skrypt na php 5.2

Cytat
Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of odczyt(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in /services/www/fake/www/temp/tupid.php on line 6


Ten post edytował dr_bonzo 25.05.2008, 14:42:00


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
piotrooo89
post 25.05.2008, 14:44:07
Post #17


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




moja wersja php PHP 5.0.2 i na niej mi wszystko ładnie hula... ale fakt czytałem że tak sie robiło kiedyś


--------------------
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: 28.06.2025 - 23:08