我想知道我的phpif / else
条件的缩写形式。
if(isset($_POST['name']) && strlen($_POST['name']) > 0)
{
$name = addslashes($_POST['name']);
}
else
{
$name = '';
$flag = '0';
}
我已经做了这个..但这对$flag
无效
$name = (isset($_POST['name']) && strlen($_POST['name']) > 0 ? addslashes($_POST['name']) : ''); // returns true
strlen
检查是多余的;如果该值不存在,则分配一个空字符串,那么当最坏的情况是空字符串时,为什么要检查strlen
呢?- 你永远不应该
addslashes
用于任何事情;我真诚地怀疑你是否处于使用有意义的超级罕见情况之一。
鉴于这两件事,让我们使用 PHP 的 null 合并运算符:
$name = $_POST['name'] ?? '';
如果你绝对必须这样做,你可以在该表达式周围包裹一个addslashes
;在最坏的情况下,它在一个空字符串上运行,它根本不做任何事情。
对于 PHP <7,这会做得很好:
$name = filter_input(INPUT_POST, 'name') ?: '';
如何处理$flag
有点神秘,因为您没有指定默认情况。若当$name
不空时,$flag
应该是真实的......它首先为什么存在?只需检查$name
的空性,无需为此并行维护第二个变量。
但是假设$flag
可能已经是假的并且独立于$name
的值,并使用布尔值而不是数字字符串值,您可以将其缩短为:
$flag = $flag && strlen($name);
尝试三元运算符是PHP。
代码将如下所示:
$name = isset($_POST['name']) ? $_GET['name'] : '';