1. PHP由哪几部分组成
PHP由一对标签和中间代码段组成,示例如下:
<?php
//代码段
?>
<?php
:表示起始标签?>
:表示结束标签//
:表示单行注释#
:也可以表示单行注释/*...*/
:表示多行注释;
:表示语句分隔符或语句的结束
注:在单独的纯文本PHP文件中,推荐不要加结束标签,因为这样可以避免被引用时出错,出现一些不可见字符,但是在PHP混编时,比如和HTML写在一个文件中时,就必须加上结束标签了。
接下来,看一个小小的示例:
<?php
//代码段
function sum ( $a , $b ) {
return $a + $b;
}
//打印输出结果
echo '两数相加之和是:'.sum ( 10 , 5.6 );
2. PHP打印输出方式
echo
:支持同时打印多个变量,HTML标签,单一或多个字符串,没有返回值,不能打印数据类型print
:它和echo
的区别在于只能打印单一变量,但有返回值var_dump()
:能够打印变量的完整信息,即:变量的类型,变量的长度,变量的数值var_export()
:返回一个变量的字符串表示(源代码)print_r()
:以人性化方式打印,通常用于复合数据类型
示例如下:
<?php
//php打印输出方式
$hello = 'Hello';
$world = 'World';
//echo 可打印多个变量,无返回值
echo $hello,$world,'<br>';
echo '<span style="color:red;">'.$world.'</span>';
echo '<hr>';
//print 打印单一变量,有返回值
print $hello.$world.'<br>';
echo print $world;//返回值为1
echo '<hr>';
//var_dump() 完整显示变量信息
var_dump($hello);
echo '<br>';
var_dump(666);
echo '<hr>';
//var_export() 返回字符串表示(源代码)
var_export($world);
echo '<br>';
var_export($hello.$world);
echo '<hr>';
//print_r() 以人性化方式打印,支持第二个参数,常用于复合类型数据
$arr = ['fish','ball','film'];
echo print_r($arr,true),'<br>';
//结合html的pre标签,可以原样输出
echo '<pre>'.print_r($arr,true).'</pre>' ;
3. PHP变量
3.1 变量的命名:
变量以 $ 符号开头,其后是变量的名称
变量要区分大小写
变量名称只能包含字母数字字符和下划线,且不能以数字开头
命名时一定要做到望文生义,不要乱取名,那样无意义
扩展知识:JS中变量和函数都要区分大小写,但在PHP中,变量区分大小写,函数、方法名、类名都是不区分的。
示例如下:
<?php
// 重要知识点:
// 1. 变量是临时储存数据的容器
// 2. 变量是实现数据复用的手段
//尽量不要用$a这种方式命名。无意义
$a = 'Jack';
$name = 'Alice';
echo $a ,'<br>', $name ,'<hr>';
//变量名只能包含数字,下划线,字母,且不能以数字开头
$_age = 21;
$name2 = 'Peter';
// $2name = 'Lisa'; 这种命名会报错
echo $name2.'的年龄是:'.$_age.'<hr>';
$tel = 'apple';
$TEL = 'honor';
//变量名不区分大小写
echo $tel ,'<br>', $TEL;
echo '<hr>';
//函数名、方法名、类名都不区分大小写
function show(){
echo '我是一个函数','<br>';
}
show();//尽量这样使用
SHOW();
3.2 变量的动态
变量的类型随值的变化而动态变化,示例如下:
<?php
//变量的动态:变量的类型随值而变化
$num = 123;
var_dump($num);
echo '<br>';
$num = '456';
var_dump($num);
3.3 变量的传递:
值传递:这是默认的方式,直接将等号右边的变量的值赋值给左边变量
引用传递:在等号的右值前加“&”(取地址符),这时会将右边变量的内存地址传给左边变量,不再是单纯的赋值操作
示例如下:
<?php
//传递分为值传递和引用传递两种方式
// 1.值传递(默认方式)
$num1 = 100;
$num2 = $num1;
echo $num1.'<hr>';
// 2.引用传递:将内存地址传递过去
// 在等号右边加上取地址符“&”
$num3 = &$num1;
$num3 = 200;
echo $num1;
3.4 可变变量
变量名可以动态的创建,示例如下:
<?php
//可变变量:一个变量的变量名可以动态的设置和使用
$str = 'hello';
// $hello = 'world';变量名和上个变量的值是一样的
$$str = 'world';
echo "{$str} {$$str}";
echo '<hr>';
echo "{$str} {$hello}";
//输出结果一样
3.5 变量的检测和删除
isset()
:检测变量,当变量存在且值不为NULL的时候才是tureunset()
:删除变量,没有返回值,直接执行empty()
:变量为空时,返回true,多用于表单元素检测扩展知识:
error_reporting(E_ALL)
,在变量前加上这个函数,打开所有报错,方便调试
示例如下:
<?php
/*
当变量为定义时,不会输出也不会报错,在调试的时候,
通常需要在查看这个变量之前打开报错,需要用到一个
函数:error_reporting(E_ALL)
*/
//打开所有报错
error_reporting(E_ALL);
//使用这个函数之后就会有报错功能了
// echo $name;
//变量检测:isset(),变量不为空且值不为null时才是true
$name = '孙悟空';
// $name = null;
if ( isset($name) ) { echo 'name:'. $name;}
else { echo '没有定义此变量';}
echo '<hr>';
//删除变量:unset(),没有返回值,直接执行
unset($name);
if ( isset($name) ) { echo 'name:'. $name;}
else { echo '没有定义此变量';}
echo '<hr>';
// empty():检测变量是否为空,多用于表单元素检测
$sex = '';
if( empty($sex) ){ var_dump($sex); }
4. 数据类型
数据类型分为:基本类型、复合类型、特殊类型
基本类型分:字符串类型、数值类型、布尔类型
复合类型分:数组、对象
特殊类型分:NULL、资源
示例如下:
<?php
//数据类型:基本数据、复合数据、特殊数据
// 1. 基本数据类型,又称标量类型或单值类型
// 字符串
$username = 'Peter';
var_dump($username);
echo '<hr>';
// 数值
$num1 = 123;
$num2 = 1.5;
var_dump($num1);
var_dump($num2);
echo '<hr>';
// 布尔
$isHappy = true;
var_dump($isHappy);
echo '<hr>';
// 2. 复合数据类型,又称多值类型
// 数组
$cars = ['BMW','Volvo','LAND-ROVER'];
var_dump($cars);
echo '<br>';
// 原样输出
echo '<pre>'.print_r($cars,true).'</pre>','<hr>';
// 对象:是属性和方法的无序集合
$obj = new stdClass;
$obj -> name = 'Mark';
$obj -> age = 33;
$obj -> hobby = 'ball';
echo $obj -> hobby,'<hr>';
// 3. 特殊类型
// NULL
$null = null;
var_dump($null);
echo '<hr>';
// 资源类型
$resourse = fopen('1.PHP的组成.php','r');
var_dump($resourse);
5. 变量类型的转换
自动转换:自动转换是由php系统偷偷进行的,不需要用户参与
强制转换:在需要转换的变量前加上数据类型或使用转换函数
注:以上转换都是属于临时转换,只有在运算过程中临时转换一下,进行运算操作,其原始数据类型还是不变,如果要永久转换,需要用到一个函数:settype(值1,值2)
,值1表示需要转换的变量,值2表示需要转换的类型
示例如下:
<?php
// 自动转换,偷偷的进行,不需要用户参与
$num = 100;
$str1 = '100per';
$str2 = 'fam200';
$bool1 = true;
$bool2 = false;
$null = null;
echo $num + $str1,'<hr>'; // 从字符串第一个字符开始解析,遇到数字取出来,100,相加得200
echo $num + $str2,'<hr>'; // 从字符串第一个字符开始解析,没有遇到数字,直接停止,相当于为0
echo $num + $bool1,'<hr>'; // 布尔值true,相当于1
echo $num + $bool2,'<hr>'; // 布尔值false,相当于0
echo $num + $null,'<hr>'; // NULL类型,也相当于0
echo $str1.$num,'<hr>'; // .号表示字符串拼接操作,会将100转换为'100'
echo $bool1.$bool2,'<hr>';
echo $bool1.$str2,'<hr>';
// 强制转换 :在变量前加上变量类型或使用转换函数
// 此时,没有警告框弹出了,
echo $num + (int) $str2,'<hr>';
// 类似的,使用转换函数,推荐使用此方法
echo $num + intval($str2),'<hr>';
// 转换后,虽然能运算,但是数据类型是不变的,还是string
echo gettype($str2),'<hr>';
// 永久转换,使用settype()函数,第一个值是变量名,第二个值是变量类型
settype($str2,'int');
echo gettype($str2);
/*
扩展知识:
允许转换的PHP数据类型有:
1.(int)、(integer):转换成整型
2.(float)、(double)、(real):转换成浮点型
3.(string):转换成字符串
4.(bool)、(boolean):转换成布尔类型
5.(array):转换成数组
6.(object):转换成对象
PHP数据类型转换函数:
1. intval() 转为整型
2. floatval() 转为浮点型
3. strval() 转为字符串
通用类型转换函数:
settype(mixed var,string type)
此函数可将数据类型永久转换
*/
6. 总结
今天学习了PHP相关的一些基础知识,了解了PHP代码的组成部分,以及常用的打印输出方式。另外,还学习了PHP变量相关知识和数据类型。除了需要去记忆一些基本概念(比如:什么情况下使用怎样的打印输出方式),还要学会动态变量如何操作以及变量类型如何转换等。