2013-09-03 25 views
33

Czy istnieje skrótowy sposób przypisania zmiennej do czegoś, jeśli nie istnieje w PHP?Skrót PHP dla isset()?

if(!isset($var) { 
    $var = ""; 
} 

chciałbym zrobić coś takiego

$var = $var | ""; 
+1

Czy '$ val = isset ($ var)? $ var: ''; 'praca dla ciebie? –

+2

Znalazłem ten post bardzo przydatny: http://davidwalsh.name/php-shorthand-if-elternational-operators – Pathros

+0

Lepsze oryginalne dla tego duplikatu: [Najlepszy sposób na podanie zmiennej wartości domyślnej (symuluj Perl ||, || =)] (http://stackoverflow.com/q/5972516/2157640) – Palec

Odpowiedz

109

aktualizacji dla PHP 7 (dzięki shock_gone_wild)

PHP 7 wprowadza tzw zerowy operatora koalescencyjny który upraszcza poniższe instrukcje do:

$var = $var ?? "default"; 

Przed PHP 7

Nie, nie ma specjalnego operatora lub specjalną składnię tego. Jednakże, można użyć potrójny operatora:

$var = isset($var) ? $var : "default"; 

Albo tak:

isset($var) ?: $var = 'default'; 
+1

Oto link do nowych funkcji PHP7 (w tym zerowy operator koalescencji): http://php.net/manual/en/migration70 .new-features.php – kurdtpage

+1

Oprócz instrukcji przypisania operator ten może być również używany w argumentach funkcji. –

+3

Nie działa z tablicami. '$ atrybut ['wskazówka'] ?? '' '** Niezdefiniowany indeks: podpowiedź ** –

16

Można użyć nowego potrójny operator (PHP 5.3+)

isset($var) ?: $var = ""; 

Albo dla starszej wersji:

$var = isset($var) ? $var : ""; 
+5

Jeśli '$ var' istnieje i ma wartość, nadpiszesz go z wartością' true'. Te 2 przykłady nie są takie same. –

+2

Masz rację. Edytowane, dzięki. –

+2

Nie jestem pewien, kto cię zawiódł, ale sprowadziłem cię z powrotem, jest to pomocna odpowiedź, dzięki. – brentonstrine