17

これは機能しませんか?それとも私はそれを間違っていますか?それの複数のバリエーションを試しましたが、主題に関する確かな情報を見つけることができないようです. 何か案は?

    $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>';
4

4 に答える 4

52

if は自立したステートメントです。それは完全なステートメントのようなものです。そのため、文字列の連結などの間に使用することはできません。より良い解決策は、省略形の三項演算子を使用することです

    (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' ).'.';
于 2012-10-26T15:40:20.190 に答える
8

if..elseステートメントであり、式内では使用できません。必要なのは「三項」?:演算子です: http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

于 2012-10-26T15:23:55.127 に答える
4

三項演算子を使用して省略形の if ステートメントを使用する?:-

$display = 'start ' . (($row['type']=="battle")? 'showB' : 'showA') . ' end ';

http://php.net/manual/en/language.operators.comparison.phpの「三項演算子」を参照してください。

于 2012-10-26T15:24:20.660 に答える
2

ifは声明です。式の中にステートメントを入れることはできません。

$str = 'foo';
if (cond)
{
  $str .= 'bar';
};
$str .= 'baz';
于 2012-10-26T15:24:32.053 に答える