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)