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。是的,然后您将以三元运算符结束阅读此,这可能对您有所帮助。