Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Przekazanie pustej wartości jako argument funkcji?
Forum PHP.pl > Forum > Przedszkole
starterrrrr
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 :/
viking
I dokładnie tak to działa, daj sobie var_dump($tryb);
''
null
'td'
SmokAnalog
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ć [].
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.