我想知道这个我的php if / 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
答案 0 :(得分:0)
strlen
检查是多余的;如果值不存在,则指定一个空字符串,那么为什么要检查strlen
什么时候最坏的情况下它是一个空字符串?addslashes
来做任何事情;我真诚地怀疑你是否处于使用合理的极为罕见的情况之一。鉴于这两件事,让我们使用PHP null-coalescing operator:
$name = $_POST['name'] ?? '';
如果你绝对必须,你可以围绕该表达式包裹addslashes
;在最坏的情况下,它操作的空字符串根本不做任何事情。
对于PHP< 7,这样做很好:
$name = filter_input(INPUT_POST, 'name') ?: '';
如果你没有指定默认情况,如何处理$flag
有点神秘。 假设<{em> $flag
在$name
不空的时候应该 truthy ...为什么它首先存在?只需检查$name
的空虚,无需为此并行维护第二个变量。
但假设 $flag
可能已经 falsey 并独立于$name
的值行事,并使用布尔值代替数字字符串值,您可以将其缩短为:
$flag = $flag && strlen($name);
答案 1 :(得分:-1)
尝试三元运算符是PHP。
代码如下:
$name = isset($_POST['name']) ? $_GET['name'] : '';