我有一些代码循环遍历数组并将结果回显到页面:
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']; }
在这种情况下这可能吗?
感谢。
答案 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";
}