繁体   English   中英

PHP如果速记

[英]PHP If shorthand

我想用一个简单的if速记来检查一个数组是否有一个特定的键,如果是这样的话,那么就不用了。

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

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

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

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"]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM