Простая проблема PHP - PullRequest
       8

Простая проблема PHP

0 голосов
/ 19 августа 2011

Я новичок в стенографических условных утверждениях и не могу на всю жизнь понять, как это сделать, вот простой код, который у меня есть:

<?php

    function evolve_nav($vals) {

       echo '<'.$vals['type'] !== '' ? ''.$vals['type'].'' : 'darn''>';

    }

?>

Кто-нибудь знает, почему это не так?ничего не возвращает и приводит к ошибке?

Ответы [ 4 ]

5 голосов
/ 19 августа 2011

Вы просто забыли несколько скобок:

function evolve_nav($vals) {
    echo '<'.(!empty($vals['type']) ? $vals['type'] : 'darn').'>';
}
evolve_nav(array('type' => 'foobar'));
evolve_nav(array('not' => 'showing'));
2 голосов
/ 19 августа 2011
echo '<' . ($vals['type'] !== '' ? $vals['type'] : 'darn') .'>';
1 голос
/ 19 августа 2011
$descriptiveVariableName = $vals['type']!=='' ? $vals['type'] : 'darn';

// View code
echo "<$descriptiveVariableName>";
0 голосов
/ 19 августа 2011
  • ''.$vals['type'].'' лишнее, сделай это $vals['type']
  • 'darn''>' это два строковых литерала без оператора (или чего-либо еще) между ними -> синтаксическая ошибка.

В этом случае я бы предпочел не использовать конкатенацию строк (т. Е. Использовать оператор точки, такой как 'xyz' . $a), а "передавать" несколько параметров для вывода.

echo
  '<',
  ''!==$vals['type'] ? $vals['type'] : 'darn',
  '>';

или используя printf

printf('<%s>', ''!==$vals['type'] ? $vals['type'] : 'darn');
...