数学运算符
支持的运算符包括: + - * / % **
赋值运算符
支持: = += -= *= /= %= **=
比较运算符
支持: == != <> > < >= <=
逻辑运算符
支持:
||&&!同时也支持:
andorxornot同时还支持三元运算符:
$x = $n > 10 ? true: false
字符串定义符
- 字符串
- 字符串(允许解析变量, 类似 JS 模板字符串)
php
<?php
$msg = "hello";
$str1 = 'hello $msg'; // 不会解析变量, 原样输出, 但是性能更好
$str2 = "message is $msg"; // 会解析变量, 然后输出类似python: f"message is {msg}"
$str3 = "message is {$msg}"; // 会解析变量: {$msg} 会和变量当作一个整体(界定符)
$str4 = "message is {$msg }"; // 会解析变量: {} 会被当作界定符
$str5 = "message is { $msg }"; // 会解析变量: {} 不会被当作界定符号
$str6 = "message is \{$msg}"; // 会解析变量: {} 不会被当作界定符, \{被转义了
// 为什么需要界定符号?
// 很容易理解: 就是为了区分变量和普通字符串
// $str7 = "message is $msgs"; // 会找不到 $msgs 这个变量, 然后报错
$str7 = "message is {$msg}s"; // 可以正常解析变量
// 由于不使用界定符可能导致一些问题, 所以在编码时, 建议统一都加上界定符转义字符
php
<?php
$str1 = 'I\'m ok'; // 将中间那个 ' 当作不同字符而不是字符串的结束字符
$str2 = "hello \n world"; // 换行定义原样输出长文本
PHP 中, 使用 "" 定义长文本的话, 字符串中所有的 " 都需要转义, 比较恶心
php
<?php
$name = "tom";
// 1.这写法, 看起来就恶心, 而且容易出错:
$js_str1 = "<script type=\"text/javascript\">
console.log(\"1:hello: {$name}\")
</script>";
echo $js_str1;
// 2.这样定义长文本就可以避免转义等问题
// 注意: 不可以在这个 <<<'JS' 语法中解析变量
$js_str2 = <<<'JS'
<script type="text/javascript">
console.log("2:hello: {$name}");
</script>
JS;
echo $js_str2;
# 3.这样定义长文本就既可以避免转义, 问题又可以解析变量,但是性能堪忧
# 注意 <<<JS_CODE 必须要以 JS_CODE 结尾, 和 shell 脚本类似
$js_str3 = <<<JS_CODE
<script type="text/javascript">
console.log("3:hello: {$name}");
</script>
JS_CODE;
echo $js_str3;字符串拼接运算符
php
<?php
$res = "hello" . "world";
var_dump($res); // (string) "hello world"