'如果'在'内''在php中的声明

时间:2010-07-28 12:57:42

标签: php loops if-statement while-loop

我有一些代码循环遍历数组并将结果回显到页面:

while($row = mysqli_fetch_array($result)) {

        echo '<tr><td><a target="_blank" href="' . $row['url'] . '">' . $row['name'] . '</a></td>' . '<td>' . $row['provider'] . '</td>' . '<td>' . $row['media'] . "</td></tr><br />\n";

        }

它工作正常,但我希望在$ row ['media']上使用'if'语句,因为它包含一些NULL和一些!NULL结果。

我希望能够回应一个不同的回应:

if($ row ['media']!= NULL){ echo'Nope'; } else { echo $ row ['media']; }

在这种情况下这可能吗?

感谢。

13 个答案:

答案 0 :(得分:1)

实现此目标的最佳方法是使用ternary operators

while (whatever)
{
    echo 'foo'
        .($statement ? 'bar' : '')
        .'baz';

}

答案 1 :(得分:1)

使用:

if ( is_null( $row['media'] ) ) { ... } else { ... }

答案 2 :(得分:0)

是的,你只需结束回声,执行if语句,然后使用另一个echo来完成代码。在解析时,HTML仍然可用。

while($ row = mysqli_fetch_array($ result)){

    echo '<tr><td><a target="_blank" href="' . $row['url'] . '">' . $row['name'] . '</a></td>' . '<td>' . $row['provider'] . '</td>' . '<td>';

    if($row['media'] == NULL) { echo 'Nope'; } else { echo $row['media']} 

echo "</td></tr><br />\n";

    }

答案 3 :(得分:0)

嗯,一个非常简单的解决方案就是这样做......

$media = $row['media'];
if ($row['media'] == NULL)
    $media = 'nope';

echo '<tr><td><a target="_blank" href="' . $row['url'] . '">' .$row['name']. '</a></td>';
echo '<td>' . $row['provider'] . '</td>' . '<td>' . $media . "</td></tr><br />\n";

答案 4 :(得分:0)

是的,将你的回声分成两个不同的回声:

echo "<tr><td><a target="_blank" href="'" ; // (etc etc)

if($row['media'] != NULL) {
  echo "NOPE";
} else {
  echo $row['media'];
}

echo " $row['url'] . '">'; // (etc etc)

语法不完美,但我很确定你会明白这个想法:)

答案 5 :(得分:0)

如果我理解你的问题,那么这应该可以正常工作:

if(is_null($row['media']) echo($row['media']) else echo('Nope');

答案 6 :(得分:0)

你总是可以使用另一个变量并在echo语句之前设置它,然后在echo语句中使用该变量。如果你想要一个单行,你可以使用这样的简写语法:

($row['media'] != null) ? 'Nope' : $row['media']

并插入您当前只有$row['media']

的位置

答案 7 :(得分:0)

为什么不这样做?

while($row = mysqli_fetch_array($result)) {

$media = ($row['media'] != NULL) ? $row['media'] : "Invalid";

echo '<tr><td><a target="_blank" href="' . $row['url'] . '">' . $row['name'] . '</a></td>' . '<td>' . $row['provider'] . '</td>' . '<td>' . $media . "</td></tr><br />\n";

}

答案 8 :(得分:0)

您可以在select语句中执行类似的操作

select

CASE
WHEN media IS NULL THEN 'Nope';
ELSE media
END as media

from

table
where......

了解详情:link text

答案 9 :(得分:0)

while($row = mysqli_fetch_array($result)) {
    echo '<tr><td><a target="_blank" href="' . $row['url'] . '">' . 
         $row['name'] . '</a></td>' . '<td>' . $row['provider'] . 
         '</td>' . '<td>' . 
        ($row['media'] == NULL ? 'Not Assigned' : $row['media']). 
         "</td></tr><br />\n";

}

答案 10 :(得分:0)

在echo:

之前将值放入临时变量中
$mediaVal = $row['media'];

if ($mediaVal == NULL) $mediaVal = 'Nope';

echo '<tr><td><a target="_blank" href="' . $row['url'] . '">' . $row['name'] . '</a></td>' . '<td>' . $row['provider'] . '</td>' . '<td>' . $mediaVal . "</td></tr><br />\n";

您可以考虑将每个字段拆分为专用变量,以便以类似的方式处理它们等等

答案 11 :(得分:0)

是的,你可以这样做。您可能希望将回声分解为多个回声,以便更容易看到最新情况。

另外,你应该查看你的if语句。小心你的条件。

if ($row['media'] != NULL) {
    echo 'Nope';
} else {
    echo $row['media'];
}

如果$ row ['media'] null,则输出'Nope'。我假设如果$ row ['media']为null,则输出'Nope'。在这种情况下,您希望使用==而不是!=。

答案 12 :(得分:0)

你可以把它放在一个声明中:

while ( $row = mysqli_fetch_array($result) ) {
    echo '<tr><td><a target="_blank" href="' . $row['url'] . '">' . $row['name'] . '</a></td>' .
         '<td>' . $row['provider'] . '</td>' .
         '<td>' . (is_null($row['media'])?"Invalid Value":$row['media']) . "</td></tr><br />\n";
}