php 点 连接符,新手易犯错点

很多时候我们需要将几个字符串连接起来显示,在PHP中,字符串之间使用 “点” 来连接,也就是英文中的半角句号 " . " 。" . " 是字符串连接符,可以把两个或两个以上的字符串链接成一个字符串。例如:

echo 'A' . 'B' . 'C'; // 输出ABC
echo 'A' . $str1 . $str2; //Aabc123

点连接符使用起来很简单,但实际项目中,经常还是看到有些同事犯错,看一个例子:


ini_set('display_errors', 1);
error_reporting(E_ALL);

class Student
{
    public $name = '';

    public $age = 0;
}

$class = new Student;
$class->name = 'zeng';

// 示例一
echo 'sex=' . isset($class->sex) ? $class->sex : 'A' . "  B"; // Notice: Undefined property: Student::$sex in /demo/index.php on line 16

// 示例二
echo 'sex=' . (isset($class->sex) ? $class->sex : 'A') . " B"; // sex=A B

示例一 提示notice错误,示例二能正常输出。
示例一的执行可以解释为,表达式不为空,执行 $class->sex ,sex不是Student类属性

(  'sex=' . isset($class->sex) )?  $class->sex : ('A' . "  B")

示例二中因为三元运算符 加了括号,能得到想要的结果

(isset($class->sex) ? $class->sex : 'A')

举个简单的例子:

// 理解为:( 'RESULT: ' . 1 )  ? 'A' : ('B' . 'C')
echo 'RESULT: ' . 1 ? 'A' : 'B' . 'C'; // 输出 A

echo 'RESULT: ' . (1 ? 'A' : 'B') . 'C'; // 输出 RESULT: AC

注意:【字符串运算符】的优先级别 大于 【三元运算符】,实际操作中,如果记不住优先级顺序,建议习惯性给对应的表达式加括号

你可能感兴趣的:(php)