Apart from what others have said, these two construct (even
if you can assume that $result will be 0 or 1) are not
semantically equivalent if the expressions have side effects
(for example, if one of them is a call to a subroutine that
reads a file, computes a result, and removes the file before
returning). In the array case, both expressions are
always
evaluated, whereas in the ternary operator only the one that
corresponds to the decision value is. As a silly example,
consider the following two expressions:
$result==0?"zero":5/$result;
("zero", 5/$result)[$result];
The second one will produce a runtime error when $result==0.
--ZZamboni