Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Przekazanie pustej wartości jako argument funkcji?
starterrrrr
post 28.10.2020, 10:08:57
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 7.01.2015

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


Witam.
Mam pewien problem

  1.  
  2. function doAction(string $stan, ?string $tryb = 'td', array $param_array = array()) {
  3.  
  4. if (!empty($tryb) && $tryb != null) {
  5. print('NOT EMPTY');
  6. } else {
  7. print('EMPTY');
  8. }
  9. }
  10.  
  11. echo doAction('aaa', '');//tutaj potrzebuje przekazać do funkcji pusta wartosc i uzyskac empty.
  12. echo doAction('aaa', null);//tutaj potrzebuje przekazać do funkcji pusta wartosc i uzyskac empty.
  13.  
  14. echo doAction('aaa'); //tutaj bym chciał, żeby mi przekazywało domyślna wartość i zwracało NOT EMPTY a w powyższych przypadkach EMPTY.
  15.  
  16.  


Chciałem ustawić domyślną wartośc parametru $tryb na td, ale teraz jest problem, bo nie mogę przekazać do funkcji pustej wartości, zawsze jest NOT EMPTY, wstawia mi zawsze 'td'.

Jak sobie z tym poradzić. Próbowałem coś z isset wewnątrz funkcji, ale zmienna $tryb, zawsze tam istnieje :/

Ten post edytował starterrrrr 28.10.2020, 10:12:31
Go to the top of the page
+Quote Post
viking
post 28.10.2020, 11:15:22
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


I dokładnie tak to działa, daj sobie var_dump($tryb);
''
null
'td'


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 28.10.2020, 11:51:53
Post #3





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


No właśnie, jakieś bajki kolega tworzy smile.gif Jak masz parametr z domyślną wartością, to przekazanie mu null nie powoduje użycia domyślnej wartości. To nie JavaScript z undefined, gdzie faktycznie tak to działa:

[JAVASCRIPT] pobierz, plaintext
  1. function foo(a = 1) {
  2. return a;
  3. }
  4.  
  5. console.log(
  6. foo(3), // 3
  7. foo(), // 1
  8. foo(undefined), // 1
  9. foo(null) // null
  10. );
[JAVASCRIPT] pobierz, plaintext


Dodam, że !empty($tryb) && $tryb != null jest trochę bez sensu, bo empty(null) to [b]true[b], więc wystarczy:

  1. if (!empty($tryb)) {


I jeszcze taka uwaga, że skoro używasz nowoczesnego PHP (?string), to polecam zamiast array() używać [].
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: 27.04.2024 - 18:34