Php 如有其他情况,可选择速记
我已经看到很多人在他们的代码中习惯于这样做:Php 如有其他情况,可选择速记,php,optimization,refactoring,shorthand-if,Php,Optimization,Refactoring,Shorthand If,我已经看到很多人在他们的代码中习惯于这样做: $value = isset($text) ? $text : ""; 此代码本质上意味着将$value设置为$number(如果已设置),否则将$value设置为” 我做了一些实验,想出了一个更简洁的语法: $value = "".$text; 除了当$text为未定义时,此代码涵盖所有情况,并以相同的方式工作 因此,我的问题是: 有没有更好、更短、更干净的方法来完成$value=isset($text)$案文:“ 我是否错误地认为我的方法以同
$value = isset($text) ? $text : "";
此代码本质上意味着将$value
设置为$number
(如果已设置),否则将$value
设置为”
我做了一些实验,想出了一个更简洁的语法:
$value = "".$text;
除了当$text
为未定义
时,此代码涵盖所有情况,并以相同的方式工作
因此,我的问题是:
$value=isset($text)$案文:“代码>
isset
case)isset
案例三元代码已经是那个兄弟的最短代码了。您已经得到了它。是的,它确实给出了相同的结果,但前提是
$test
包含空字符串。如果未初始化$test
,它将生成一个错误,但检查这正是此三元If语句的目的
如果希望在不使用If语句的情况下执行相同的操作,则仍然需要检查是否设置了$test
,如果未设置,则使用空字符串对其进行初始化,这将需要另一个If语句
总而言之:不,似乎没有更好的方法来实现这一点。从PHP7.0开始,有一个空合并操作符可以缩短此操作:
// ternary
$value = isset($text) ? $text : "";
// null coalesce
$value = $text ?? "";
如果未定义变量,您的连接语句将生成错误。这是错误的$value=“”。$text;如果未设置$text,则直接使用时将生成错误1。阿福,2号。是的,你不能仅仅考虑ISSET检查3。阿福,第一。这已经是一个三元运算符,它几乎是if-else 2的简短语法。您的代码将抛出一个E_通知3。是的,然后您将以三元运算符结束阅读此,这可能对您有所帮助。