Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]odczyt zmiennej z funkcji
Forum PHP.pl > Forum > Przedszkole
trucksweb
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 ?
Crozin
  1. <?php
  2. function odczyt(&$k){
  3. $k = 1;
  4. }
  5.  
  6. odczyt($k);
  7.  
  8. if($k == 1){
  9.  
  10. }
  11. ?>
trucksweb
tez probowalem ale nie dziala :/
nawet odczyt samej zmiennej nie przechodzi
  1. <?php
  2. echo $k;
  3. ?>
piotrooo89
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. ?>
pyro
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. ?>
piotrooo89
używając wskaźników mogę zrobić to samo co globalem... takie przyzwyczajenie z c++
pyro
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. ?>
trucksweb
no ale teraz jest to zmienna globalna. czyli innego rozwiazania poza globalnymi i sesjami nie ma ?- tak z ciekawosci pytam
piotrooo89
jest coś takiego jak ja zrobiłem - wskaźniki... smile.gif
choć nie sa one "oficjalne" - ale można je emulować.
pyro
piotrooo89, to co ty zrobiles jest bledne smile.gif
piotrooo89
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.
pyro
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
piotrooo89
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.
pyro
Aż z ciekawości sprawdzę

//EDIT

rzeczywiście =/

//EDIT

już wiem dlaczego, mój błąd
piotrooo89
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.
dr_bonzo
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
piotrooo89
moja wersja php PHP 5.0.2 i na niej mi wszystko ładnie hula... ale fakt czytałem że tak sie robiło kiedyś
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.