Php 为什么这个三元运算符不起作用?

Php 为什么这个三元运算符不起作用?,php,database,ternary,Php,Database,Ternary,我认为这个变量很简单,但它不起作用?如果设置了行,它会根据需要回显该行,但如果设置为“false”或未设置,则不会打印“N/A”?我做错什么了吗 $term = isset($row['term']) ? $row['term'] : 'N/A'; 我的建议是尝试以下方法: $term = !empty($row['term']) ? $row['term'] : 'N/A'; $row = ['term' => '']; $term = isset($row['term']) ?

我认为这个变量很简单,但它不起作用?如果设置了行,它会根据需要回显该行,但如果设置为“false”或未设置,则不会打印“N/A”?我做错什么了吗

$term = isset($row['term']) ? $row['term'] : 'N/A';

我的建议是尝试以下方法:

$term = !empty($row['term']) ? $row['term'] : 'N/A';
$row = ['term' => ''];

$term = isset($row['term']) ? $row['term'] : 'N/A';

echo $term; // Prints ''
您可能会遇到这样一种情况,即设置了
$row['term']
,但没有值,因此它仍然属于真实情况

例如:

$term = !empty($row['term']) ? $row['term'] : 'N/A';
$row = ['term' => ''];

$term = isset($row['term']) ? $row['term'] : 'N/A';

echo $term; // Prints ''

var_dump($term)显示了什么?这个问题缺乏细节,似乎与数据库有关。我们也不知道这是从哪里来的,如何来的。架构和值是必需的。
isset()
empty()
在这里是两种不同的动物。再说一遍,我们不知道你的数据库里有什么。那么,你能详细说明我的问题吗?我自己投票结束了这个不清楚的问题。你说的“不工作”是什么意思?我猜,
$row['term']
始终处于设置状态,但可能为空或空白@FunkFortyner在这里是正确的。这意味着如果数据库是“空的”,它将不会输出“N/A”。通过更改要使用的var!正如@Mikey建议的那样,它现在可以按预期工作,因为var是“set”,但它是空的,不会输出“N/A”。实际上,我的var_转储应该是
var_转储($row['term')。谢谢你,迈克。。。我猜变量被设置了,即使是空的,也不是空的!空是完美的工作!就要回答同样的问题了,投票支持米奇的回答。即使您的var为true/false,它也已设置,因此只需使用它的状态$term=(!$row['term']&&isset($row['term'])$第['term']行:“不适用”;好的做法是使用var_转储变量并了解发生了什么。