PHP的语法
php的语法是<?php开头,?>结尾的
<!DOCTYPE html>
<html>
<body>
<h1>My first PHP page</h1>
// php的单行注释
<?php
echo "Hello World!";
?>
/*
这是php
的多行
注释
*/
</body>
</html>
PHP的标记风格
PHP和其他的Web的语言一样,都是使用一对标记将PHP代码部分包含起来.PHP一共支持4中标记风格
- XML风格
<?php echo "这是XML标记风格!"; ?>
- 脚本风格
<script language='php'> echo "这是脚本风格标记!"; </script>
- 简短风格
<? echo "这是简短风格"; ?>
- ASP风格
<% echo "这是asp风格"; # #好风格的注释 %>
PS:如果使用简短风格和ASP风格,要在php.ini文件中设置,将short_open_tag和asp_tags设置为on,重启服务器.
PHP的变量
PHP变量的定义
变量是用来存储数据的"容器"
PHP的变量规则:
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的(
Y 是两个不同的变0)
$x = 10
$y = 12
$text = "HELLO"
$z = $x + $y
PS: PHP 是一门弱类型语言,PHP 会根据变量的值,自动把变量转换为正确的数据类型。在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
PHP变量的作用域
PHP的有四种不同的变量作用域
- local,局部作用域
<?php function test() { $a = 15; echo "内部输出结果:" . $a; } echo "外部输出结果:" . $a; // 无法访问变量 a echo PHP_EOL; test(); ?>
- glocal,全局作用域
<?php $x = 5; $y = 10; $z = 0; function test() { global$x,$y,$z; $z = $x + $y; } test(); echo $z; //结果是15 $x = 5; $y = 10; $z = 0; function test() { $GLOBALS['z'] = $GLOBALS['x']+$GLOBALS['y']; } Test(); echo $z; //结果是15 ?>
- static,静态作用域,当一个函数执行完成时,它的所有变量通常都会被删除。然而,有时需要局部变量不要被删除,要做到这一点,请在您第一次声明变量时使用 static 关键字。当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
<?php function test() { static $x=0; echo $x . " "; $x++; } test(); test(); test(); test(); ?> // 输出结果为0 1 2 3
- parameter(参数)——参数作用域
参数是通过调用代码将值传递给函数的局部变量。关于局部变量和全局变量的优先级,因为在PHP中函数都有自己单独的作用域,所以在局部变量的优先级要大于全局变量(在你不声明这个变量之前),声明之后此变量就变成了局部变量如果修改值那么全局变量的值也会改变。<?php $a = 10; $b = 5; function test() { $a = 15; $b = 5; $z = $a-$b; echo $z; } test(); function test1() { global $a,$b; $a = 15; $b = 5; $z = $a-$b; echo PHP_EOL; echo $z; } test1(); function test2() { global $a,$b; $z= $a-$b; echo PHP_EOL; //换行符 echo $z; } test2(); // 输出结果为10 10 10 ?>
PHP EOF
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
使用概述:
- 必须后接分号,否则编译通不过。
- EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
- 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
- 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
- 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
<?php
echo <<<EOF
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
$name="runoob";
$a= <<<EOF
"abc"$name
"123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>
PS:
- 以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。
- 开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。
- 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接.
PHP的输出语句对比
echo,print,print_r,var_dump 的区别
echo
输出一个或者多个字符串。print
和 echo 最主要的区别: print 仅支持一个参数,并总是返回 1。print_r
打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。var_dump
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。var_dump 和 print_r 的区别
var_dump 返回表达式的类型与值而 print_r 仅返回结果,相比调试代码使用 var_dump 更便于阅读。