Не работает ли это? или я просто делаю это неправильно? Пробовал несколько вариаций, и, похоже, не может найти какой-либо солидной информации по этому вопросу. есть идеи?
$given_id = 1; while ($row = mysql_fetch_array($sql)) { if ($i < 10){ $display = '<a href="' . $row['info'] . '" onMouseOver="' . if($row['type']=="battle"){ . 'showB' . } else { . 'showA'() . "><div class="' . $row['type'] . "_alert" . '" style="float:left; margin-left:-22px;" id="' . $given_id . '"></div></a>';
если это самостоятельное утверждение. Это похоже на полное заявление. Поэтому вы не можете использовать его между конкатенированием строк или около того. Лучшее решение – использовать сокращенный тройной операнд
(conditional expression)?(ouput if true):(output if false);
Это также можно использовать в конкатенации строк. Пример :
$i = 1 ; $result = 'The given number is'.($i > 1 ? 'greater than one': 'less than one').'. So this is how we cuse ternary inside concatenation of strings';
Вы также можете использовать вложенный тернарный оператор:
$i = 0 ; $j = 1 ; $k = 2 ; $result = 'Greater One is'. $i > $j ? ( $i > $k ? 'i' : 'k' ) : ( $j > $k ? 'j' :'k' ).'.';
if..else
является выражением и не может использоваться внутри выражения . Что вы хотите – это «тройной» ?:
Оператор: http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary .
Использовать сокращенное выражение с использованием тройных операторов ?:
–
$display = 'start ' . (($row['type']=="battle")? 'showB' : 'showA') . ' end ';
См. «Терминальные операторы» на странице http://php.net/manual/en/language.operators.comparison.php
if
это утверждение. Невозможно поставить выражения внутри выражения.
$str = 'foo'; if (cond) { $str .= 'bar'; }; $str .= 'baz';