PHP If shorthand


PHP If shorthand

我想要一个简单的if简写,检查数组是否有特定的键,如果有,则取消设置。

$test = array("hi" => "123");
isset($test["hi"]) ? unset($test["hi"]);

为什么会出现解析错误?正确的语法是什么。

不能在三元条件运算符中使用unset(),因为该语言构造不返回值,并且运算符希望计算为某个值,而不是执行代码块。另外,您的三元运算符不完整(缺少:组件)。

if语句怎么会这么长?

if (isset($test["hi"])) unset($test["hi"]);

因为它是一个三元运算符。此代码:

$a = ($condition)? $b : $c;

相当于:

if($condition) $a = $b;
else $a = $c;

对于您的要求,不需要检查,您可以简单地unset()数组元素,而无需首先检查它,并且它不会给出错误消息:

unset($test["hi"]);

三元条件运算符如下所示:

a ? b : c

您缺少c子句,并且b子句不是返回值的表达式。这个构造是而不是if语句的简写,您试图使用它而不是为了它的设计。

使用if语句:

if (isset($test['hi']))
    unset($test['hi']);

还有稍微明确一点的array_key_exists。将其文档与isset的文档进行比较,以确定哪一个更适合您的需求。

您不需要测试任何东西。如果您试图取消设置一个非集合变量,则不会发生任何事情。

相当于你的代码是:

$test = array("hi" => "123");
unset($test["hi"]);

即使没有设置$test["hi"],您仍然可以取消设置…

$test = array("hi" => "123");
!isset($test["hi"]) ?: unset($test["hi"]);