Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Nazwa zmiennej przekazanej do funkcji
Bastion
post 12.04.2006, 17:12:22
Post #1





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


Czy da sie jakos pobrac nazwe zmiennej przekazanej do funkcji ?

  1. <?php
  2.  
  3. function foo($a)
  4. {
  5.  ....
  6. }
  7.  
  8. foo($zmienna);
  9.  
  10. ?>


wynikiem powinno byc wyswietlenie "zmienna", czyli nazwa a nie wartosc


--------------------
Go to the top of the page
+Quote Post
Rozpalacz
post 12.04.2006, 19:31:05
Post #2





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 31.01.2006

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


A po co Ci tak kombinowac? Tworzysz nazwy zmiennych dynamicznie? Podaj przyklad takiego zastosowania to moze bedzie latwiej cos podpowiedziec.
Go to the top of the page
+Quote Post
Bastion
post 12.04.2006, 19:41:58
Post #3





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


napisalem przeciez co chce uzyskac ... widocznie potrzebuje.


--------------------
Go to the top of the page
+Quote Post
SoulRipper
post 13.04.2006, 16:40:53
Post #4





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 15.03.2003
Skąd: lodz

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


Przekaz jako argument tablice asocjacyjna, a potem po wartosci pobierz index za pomoca funkcji key()

  1. <?
  2. $CFG['ind1'] = 123;
  3. function test($var)
  4. {
  5. $ret = key($var);
  6. return $ret;
  7. }
  8.  
  9. echo test();
  10. ?>
Go to the top of the page
+Quote Post
Bastion
post 13.04.2006, 19:21:49
Post #5





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


Ciekawe rozwiazanie smile.gif Trzeba to przetestowac cool.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post 13.04.2006, 19:27:59
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no to w takim razie mozna podac drugi parametr do funkcji, będący nazwą. no bo czym to się bedzie roznilo od budowania na tę konieczność tablicy?
  1. <?php
  2.  
  3. $zmienna = 2;
  4. function test($value, $name)
  5. {
  6. echo "Nazwa : $name  Wartosc: $value";
  7. }
  8.  
  9. echo test($zmienna, 'zmienna');
  10.  
  11. ?>
smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
huntercs
post 13.04.2006, 22:03:13
Post #7





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 6.02.2005

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


albo:
  1. <?php
  2. $zmienna = 'bar';
  3.  
  4. function foo($value_name) {
  5. global $$value_name;
  6. echo "Nazwa : $value_name  Wartosc: ${$value_name}";
  7. }
  8.  
  9. echo foo('zmienna');
  10. ?>

rolleyes.gif


--------------------


Go to the top of the page
+Quote Post
Bastion
post 13.04.2006, 22:39:09
Post #8





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


trzeba bedzie wybrac najszybsze rozwiazanie smile.gif panowie - dziekuje biggrin.gif


--------------------
Go to the top of the page
+Quote Post
techjaw
post 19.02.2021, 13:36:03
Post #9





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 4.10.2020

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


Odgrzeję już leciwego kotleta

mam prostą fukcję:
  1.  
  2. function p($zmienna) {
  3. echo '<pre>----------------------'.$tu_jakas_zmienna_rozna_za_kazdym_razem.'-----------------------------------'.(isset($_SERVER['REMOTE_ADDR']) ? '<br>' : PHP_EOL);
  4. print_r($zmienna);
  5. echo (isset($_SERVER['REMOTE_ADDR']) ? '<br>' : PHP_EOL).'---------------------------------------------------------</pre>'.(isset($_SERVER['REMOTE_ADDR']) ? '<br>' : PHP_EOL);
  6. }


Wywołuję ją:
logi($tu_jakas_zmienna_rozna_za_kazdym_razem);

chciałbym aby ta fukcja oprócz wyświetlenia zawartości zmiennej wyświetliła też nazwę. Macie jakiś pomysł?
Go to the top of the page
+Quote Post
nospor
post 19.02.2021, 14:38:23
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A czemu nie uzyjesz podanych wyzej rozwiazan?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Tomplus
post 19.02.2021, 14:54:44
Post #11





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Produkuje wyimaginowane problemy, które zwykły programista nawet się nie pochyli, aby je rozwiązywać.
Go to the top of the page
+Quote Post
Pyton_000
post 19.02.2021, 20:30:14
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Cytat(Tomplus @ 19.02.2021, 14:54:44 ) *
Produkuje wyimaginowane problemy, które zwykły programista nawet się nie pochyli, aby je rozwiązywać.

Ludzie na siłę tworzą takie potworki a potem się zastanawiają - a co to robiłoooo...
Go to the top of the page
+Quote Post
techjaw
post 20.02.2021, 19:16:17
Post #13





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 4.10.2020

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


Cytat(nospor @ 19.02.2021, 14:38:23 ) *
A czemu nie uzyjesz podanych wyzej rozwiazan?

Bo nie działają a dokładanie drugiego argumentu nie wchodzi w grę.

ja nie wywołuję foo('zmienna'); tylko foo($zmienna); gdzie nazwa zmienne za każdym razem inna.
Liczyłem że przez ostatnie 15 lat powstanie jakiś parametr/funkcja.
Go to the top of the page
+Quote Post
Pyton_000
post 21.02.2021, 09:28:46
Post #14





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Cytat(techjaw @ 20.02.2021, 19:16:17 ) *
Bo nie działają a dokładanie drugiego argumentu nie wchodzi w grę.

ja nie wywołuję foo('zmienna'); tylko foo($zmienna); gdzie nazwa zmienne za każdym razem inna.
Liczyłem że przez ostatnie 15 lat powstanie jakiś parametr/funkcja.

To może oświeć nas dlaczego chcesz taki potworek
Go to the top of the page
+Quote Post
gino
post 21.02.2021, 10:28:16
Post #15





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


W php nie ma sposobu (dobrego) na zrobienie tego co chcesz zrobić, prawdopodobnie dlatego, że nie powinno się tego robić (gdyby można było, to byłaby odpowiednia funkcja). Nie wiem po co Ci to. Może jednak warto zmienić tok myślenia przy pisaniu Twojego kodu, napisz po co chcesz nazwę tej zmiennej, może da się do Twojego kodu podejść inaczej, prościej. Programuję tak na serio już z 10 lat, ale nigdy nie potrzebowałem znać nazwy zmiennej. Być może wszystko przede mną jeszcze, ale na to jak programuję a pisałem wiele rzeczy, nie widzę takiej potrzeby.
Go to the top of the page
+Quote Post
Tomplus
post 21.02.2021, 10:32:14
Post #16





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Nazwa zmiennej, nie ma znaczenia w działaniu kodu, więc jeżeli oczekujesz informację o nazwie zmiennej podczas wsadzania jej do funkcji to niestety nie uzyskasz jej - nie przypominam sobie aby inne języki programowania miały taką właściwość.

Jeżeli potrzebujesz nazwy którą chcesz dostarczyć do funkcji to użyj tablicy, gdzie klucz będzie nazwą.

@gino
Nie tylko Ty. Zacząłem zagłębiać się w programowanie 15 lat temu i tyle lat, i w projekty prywatne, i biznesowe nigdy taki problem u mnie nie występował, żeby nazwę zmiennej gdzieś zapisywać. Zawartość zmiennej była ważna.



Ten post edytował Tomplus 21.02.2021, 10:36:54
Go to the top of the page
+Quote Post
techjaw
post 21.02.2021, 13:49:19
Post #17





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 4.10.2020

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


Już Panie i Panowie tłumaczę, ja programuję od 24 lat choć to nie istotne, wracając do tematu:

moja prosta funkcja nie robi nić innego jak w sposób czytelny pokazuje array poprzez print_r:
  1. function p($zmienna) {
  2. echo '<pre>----------------------'.$tu_jakas_zmienna_rozna_za_kazdym_razem.'-----------------------------------'.(isset($_SERVER['REMOTE_ADDR']) ? '<br>' : PHP_EOL);
  3. print_r($zmienna);
  4. echo (isset($_SERVER['REMOTE_ADDR']) ? '<br>' : PHP_EOL).'---------------------------------------------------------</pre>'.(isset($_SERVER['REMOTE_ADDR']) ? '<br>' : PHP_EOL);
  5. }

uźywam jej w kodzie wielokrotnie czasem jedna pod drugą :
p($options);
p($produkty_w_sklepie);
p($categories);

itd. problem w tym że przeglądając wyniki często zapominam jaki fragment odpowiada jakiej zmiennej np jak poniżej

--------------
sasdsdfd
dsaffd
afd
------------

--------------
hewiff\ef
ef
ef
ef
ef
afd
------------

--------------
sasdsdfd
dsaffdefeqfqf
qeefqewf
f
qewfqe
feq
fq
afd
------------

mając :
----- $options ---------
sasdsdfd
dsaffd
afd
------------

od razu wiedziałbym który blok której zmiennej dotyczy. Ot cała tajemnica smile.gif

Wiem, że mogę function p($zmienna, $nazwa) i wywołać p($categories, 'categories');
ale myślałem, że ktoś wpadł na pomysł jak to jednym parametrem załatwić.
Tak czy siak dziękuję za zajęcie stanowiska dyskusję.

Ten post edytował techjaw 21.02.2021, 13:50:19
Go to the top of the page
+Quote Post
viking
post 21.02.2021, 14:08:04
Post #18





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


I po to wymyślono https://www.php.net/manual/en/function.debug-backtrace.php żebyś dokładnie wszystko wiedział.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 21.02.2021, 19:01:33
Post #19





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Cytat(viking @ 21.02.2021, 14:08:04 ) *
I po to wymyślono https://www.php.net/manual/en/function.debug-backtrace.php żebyś dokładnie wszystko wiedział.

I zaorane smile.gif
Go to the top of the page
+Quote Post
Tomplus
post 21.02.2021, 22:08:06
Post #20





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Ja rozumiem problem, skąd takie oczekiwanie na wynik, ale prawdę mówiąc oczekiwanie takiego wyniku:
przykład:

  1. $alfa = 'Foo';
  2. printMe($alfa); //alfa
  3. $beta = 'Bar';
  4. printMe($beta); //beta
  5. $gamma = '2000';
  6. printMe($gamma); //gamma
  7. printMe($alfa); //alfa


jest wg mnie zbędna.

Lepiej już przenosić sobie informację którą się da przenieść np. numer linii

  1. function printMe($content, $line, $file) {
  2. print_r([$file .':'. $line, $content]);
  3. }
  4.  
  5.  
  6. printMe('Foo', __LINE__, __FILE__);
  7. printMe('Bar', __LINE__, __FILE__);



I spełnia to warunek "od razu wiedziałbym który blok której zmiennej dotyczy"
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 26.06.2025 - 13:08