一、在学习之前先了解一下PHP
PHP 是服务器端脚本语言。(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码,PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器,PHP 文件的默认文件扩展名是 ".php"
PHP 可以生成动态页面内容, 可以创建、打开、读取、写入、关闭服务器上的文件,可以收集表单数据,可以发送和接收 cookies, 可以添加、删除、修改您的数据库中的数据,可以限制用户访问您的网站上的一些页面,可以加密数据等
二、接下来开始正式学习PHP
PHP 脚本可以放在文档中的任何位置。PHP 脚本以 <?php 开始,以 ?> 结束, PHP中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print。
如:<div><?php echo "欢迎来到PHP世界!"; ?></div>
PHP 变量
- 变量以 $ 符号开始,后面跟着变量的名称 如:$liang = 5; 或 $hermit = "欢迎来到PHP"; 如果是文本需要使用 " " 包起来。
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($X 和 $x 是两个不同的变量)
PHP 是一门弱类型语言
我们不必向 PHP 声明该变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称,例如(TypeScript(强类型语言))。
PHP 变量作用域
变量的作用域是脚本中变量可被引用/使用的部分。PHP 有四种不同的变量作用域:local(局部)、global(全局)、static(静态)、parameter(参数)
1.在所有函数(function)外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
2.在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问
如:<div class="box">
<?php
$liang = 8;
function hermit(){
$hua = 10;
echo "<div class='box1'>测试测试</div>";
global $liang; //全局变量必须使用global关键字才能拿到。否则在函数里面拿不到全局变量
$aa = $liang + $hua;
echo $aa;
};
hermit();
?>
</div>
3.PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
如:<div class="box2">
<?php
$tu = 7;
$lis = 9;
$hah = 3;
function myLiang (){
$GLOBALS['hah'] = $GLOBALS['tu'] + $GLOBALS['lis'];
}
myLiang();
echo $hah;
?>
</div>
Static 作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字:
如:<?php
function myTest(){
static $x=0; //注:每次调用该函数时,该变量将会保留着函数前一次被调用时的值,且该变量仍然是函数的局部变量。但是如果不加static,则3次调用输出都是 0
echo $x;
$x++;
}
myTest(); //第一次调用输出 0
myTest(); //第二次调用输出1
myTest(); //第三次调用输出2
?>
注:如果不加static,则3次调用都是输出 0
参数作用域
参数很简单,和javascript差不多,不过参数也要带$符号,如:
<div class="box3">
<?php
function liangs($hh){
echo $hh;
}
liangs(8);
?>
</div>
echo 和 print 语句
echo 和 print 区别: echo 可以输出一个或多个字符串、print 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
例:<?php
echo "<h2>PHP 很有趣!</h2>";
echo "Hello world!<br>";
echo "我要学 PHP!<br>";
echo "这是一个", "字符串,", "使用了", "多个", "参数。"; //输出:这是一个字符串,使用了多个参数。
?>
<?php
print "<h2>PHP 很有趣!</h2>";
print "Hello world!<br>";
print "我要学 PHP!<br>";
?>
EOF(heredoc) 定界符 (相当于html的pre标签,保留换行之类的格式)
以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。
开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。
位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接
例:
数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
1.字符串,使用双引号或单引号括起来的任何文本。如 : $a = 'lalalalll, 会员卡 ';
2.整形:整数是一个没有小数的数字, 必须至少有一个数字 (0-9) ,不能包含逗号或空格,整数可以是正数或负数,可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
如:
<?php
$c = 2541;
var_dump($c);
echo '<br/>';
$d = -28;
var_dump($d);
echo '<br/>';
$e = 0x8c;//十六进制数
var_dump($e); //140
echo '<br/>';
$f = 047;//八进制数
var_dump($f); //39
echo '<br/>';
?>
附: var_dump() 函数返回变量的数据类型和值
3. 浮点型:浮点数是带小数部分的数字,或是指数形式。
如:
<?php
$g = 5.234;
var_dump($g);
echo '<br/>';
$h = 2.4e3;
var_dump($h);
echo '<br/>';
$i = 8E-5;
var_export($i);
?>
4.布尔型:布尔型可以是 true或 false。布尔型通常用于条件判断。
5.数组:数组可以在一个变量中存储多个值。
如:
<?php
$arr = array('liang', 'tu', 'hua', 'hermit', 8);
var_dump($arr);
?>
6.对象:对象数据类型也可以用于存储数据。在 PHP 中,对象必须声明。首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。然后我们在类中定义数据类型,然后在实例化的类中使用数据类型
如:<?php
class Car{
var $color;
function __construct($color = '#0f0'){
$this->color = $color;
}
function what_color(){
return $this->color;
}
}
function print_vars($obj){
foreach (get_object_vars($obj) as $prop => $val){
echo "t$prop = $val
";
}
}
$herbie = new Car("white");
//显示herbie属性
echo " herbie: Properties
";
print_vars($herbie);
?>
附:关键字this就是指向当前对象实例的指针,不指向任何其他对象或类。
7.NULL 值:NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。可以通过设置变量值为 NULL 来清空变量数据
如:
<?php
$k = "liang Tuhua";
echo "未清空之前: $k <br/>"; //输出:未清空之前: liang Tuhua
$k = null;
echo "清空之后: $k <br/>"; //输出:清空之后:
?>
附:var_dump() 方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型。显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
附:echo,print,print_r,var_dump 的区别:
1.echo:输出一个或者多个字符串。
2.print:和 echo 最主要的区别: print 仅支持一个参数,并总是返回 1。
3.print_r:打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。
4.var_dump:此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
5.var_dump 和 print_r 的区别:var_dump 返回表达式的类型与值而 print_r 仅返回结果,相比调试代码使用 var_dump 更便于阅读。