Heredoc 结构(heredoc 结构类似于双引号字符串)
语法:
在 <<< 之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。
结束时所引用的标识符必须在该行的第一列,而且,标识符的命名也要像其它标签一样遵守 PHP 的规则:只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或制表符。更重要的是结束标识符的前面必须是个被本地操作系统认可的换行,而结束定界符(可能其后有个分号)之后也必须紧跟一个换行
语法规范: $bar = <<<LABEL // 这儿放字符串 LABEL;
应用示例:
class Test {
// 类的属性
public $bar = <<<EOT
World!
EOT;
// 类的常量
const A = <<<FOOBAR
AAAA
FOOBAR;
public function index()
{
// 静态变量
static $test = <<<LABEL
TIME
LABEL;
// 数组
$arr = array(<<<EOD
footbar!
EOD
);
// 在 heredoc 结构中使用双引号
echo <<<"FOOBAR"
Hello $this->bar
FOOBAR;
var_dump($this->bar); // string 'World!'
var_dump($test); // string 'TIME'
var_dump($arr); // array (size=1)0 => string 'footbar!'
var_dump(self::A); // string 'AAAA'
}
}
Nowdoc 结构
nowdoc 结构类似于单引号字符串,不进行解析操作, 跟在后面的标识符要用单引号括起来,其它的所有规则跟 heredoc 结构一样,尤其是结束标识符的规则
//最典型的示例是用来初始化类的属性或常量class index{
public $bar = <<<'EOT'
bar
EOT;
}
字符串转换为数值
1、若字符串没有包含 '.','e' 或 'E' 且其数字值在 PHP_INT_MAX 的范围之内,该字符串将被当成 integer 来取值。其它所有情况下都被作为 float 来取值。
2、该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0。合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点), 再跟着可选的指数部分。指数部分由 'e' 或 'E' 后面跟着一个或多个数字构成
$foo = 1 + "10.5"; // $foo is float (11.5) $foo = 1 + "-1.3e3"; // $foo is float (-1299) $foo = 1 + "bob-1.3e3"; // $foo is integer (1) $foo = 1 + "bob3"; // $foo is integer (1) $foo = 1 + "10 Small Pigs"; // $foo is integer (11) $foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2) $foo = "10.0 pigs " + 1; // $foo is float (11) $foo = "10.0 pigs " + 1.0; // $foo is float (11)
来源:https://www.cnblogs.com/chrdai/p/6555548.html