2017-01-19 11 views
6

Spodziewałem wyjście byłoby:Ternary Operator problem

http://domain.dev/category/123

Ale rzeczywisty wynik jest: ""

$condition = true; 
$categoryId = 123; 
$result = 'http://domain.dev/category' . empty($condition) ? '' : '/' . $categoryId; 

var_dump($result); 

Z tego co rozumiem - to sprawdź czy empty($condition) jest pusty - jeśli jest prawdziwy, dodaj http://domain.dev/category z '' LUB jeszcze /$categoryId

Co zrobiłem źle?

+2

Co pan właściwie jest sprawdzenie, czy ' 'http://domain.dev/category. pusty ($ condition) 'to" truthy "- którym zawsze jest - więc zwracany jest pusty ciąg znaków. – CD001

+0

@ CD001 Ahhh teraz mam to :) brakowało pierwszej części. –

Odpowiedz

9

wystarczy umieścić () wokół stwierdzenia:

$result = 'http://domain.dev/category' . (empty($condition) ? '' : '/' . $categoryId); 

więc jest traktowane jako operatora