学习一门新的计算机语言,对于基础基础不能丢三落四、模凌两可,这是一定要过关的。这对于以后遇到问题,能事半功倍,快人一步。不然会处处碰壁,事倍功半。假如你不是特别优秀的人,那可以选择像我一样,重复再重复吧,加油💪~
一、符号
单引号括,双引号都可以用:
<?php echo "Hi,imooc!";?>
<?php echo 'Hi,imooc!';?>
连接符(.):
<?php echo 'Hi,'.'imooc!';?>
php在这一点比较特殊,其它语言中是用加号(+)来表示的,比如:JavaScirpt、Asp、C。
结尾要加分号:
(;)分号;一定在半角状态下输入。
注释语句:
PHP:// 注释语句
Html:<!--注释语句-->
CSS:/*注释语句*/
注释语句可以在PHP程序的任意位置(但注释语句一定要写在之间)。
二、变量
定义&输出:
$var_name = "苹果";
$n = 10;
var_dump($var_name);
var_dump($n);
命名规则
"$_name"
√
"$name"
√
"$name2"
√
"$9name"
×
2.由字母、数字、“_”、汉字组成。
"$_qq"
√
"$qq308"
√
"$my_apple"
√
"$name我等"
√
"$name*"
× (不允许符号)
"$666"
× (不允许纯数字)
"$my apple"
× (不允许空格)
格式
1.下划线法:$my_apple
2.驼峰命名法:$myApple
3.在PHP中变量名是区分大小写,
“$my_book”
“$my_Book”
代表两个不同的变量。
变量的数据类型
php支持八种原始类型:
1.四种标量类型:
boolean 布尔型
①只有两个值,一个是TRUE,另一个FALSE。即为是或否/真或假。
②不区分大小写, "TRUE" = "true "
③主要用在条件结构。
④用”echo”输出时,“true”则输出“1”,“false”不输出。
所以需要注意变量的类型,“1”可能是整型也可能是true,所以需要var_dump输出一下,
如:https://www.imooc.com/code/745
integer 整型
$data_int = 123; // 十进制数 ,123
$data_int = -123; // 一个负数 ,-123
$data_int = 0123; // 八进制数(等于十进制的 83) ,83
$data_int = 0x123; // 十六进制数(等于十进制的 26) ,291
// 十进制、八进制(数字前“0”)、十六进制(数字前“0x”)。(0是阿拉伯数字0,不是英文字母"欧/o")
float 浮点型(也称double)
$num_float = 1.234; //小数点 ,1.234
$num_float = 1.2e3; //科学计数法,小写e ,1200
$num_float = 7.0E-10; //科学计数法,大写E ,0.007
// 支持小数点、科学计数法小写的e,大写的E表示。
string (字符串)
“$str_string1 = '我是字符串';”
// 字符和字节一样,所以一共有256种不同字符的可能性。
// 三种方法定义:单引号形式、双引号形式和Heredoc结构形式。
// 单双引号嵌入与转义符“\”
$str_string1 = '甲问:"你在哪里学的PHP?"';
$str_string2 = "乙毫不犹豫地回答:'当然是慕课网咯!'";
$str_string3 = '甲问:\'能告诉我网址吗?\'';
$str_string4 = "乙答道:\"www.imooc.com\"";
// 美元符号标识的变量与单双引号
$love = "I love you!";
$string1 = "慕课网,$love"; 输出:慕课网,I love you!
$string2 = '慕课网,$love'; 输出:慕课网,$love
// Heredoc结构形式,很长的字符串
$string1 = <<<GOD
我有一只小毛驴,我从来也不骑。
有一天我心血来潮,骑着去赶集。
我手里拿着小皮鞭,我心里正得意。
不知怎么哗啦啦啦啦,我摔了一身泥.
GOD;
2.两种符合类型:
array 数组
object 对象
3.特殊类型:
resource 资源
资源是由专门的函数来建立和使用的,
// 例如打开文件、数据连接、图形画布。
$file=fopen("f.txt","r"); //打开文件
$con=mysql_connect("localhost","root","root"); //连接数据库
$img=imagecreate(100,100);//图形画布
// 对资源进行创建、使用和释放
$file_handle = fopen("/data/webroot/resource/php/f.txt","r");
if ($file_handle){
//接着采用while循环(后面语言结构语句中的循环结构会详细介绍)一行行地读取文件,然后输出每行的文字
while (!feof($file_handle)) { //判断是否到最后一行
$line = fgets($file_handle); //读取一行文本
echo $line; //输出一行文本
echo "<br />"; //换行
}
}
fclose($file_handle);//关闭文件
// 任何资源,在不需要的时候应该被及时释放。
// 忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽。
null
NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,
①当被赋值为NULL:var1 = null;/var1 = NULL;
②或者尚未被赋值:var_dump(var3 = "节日快乐!";unset($var3);
这三种情况下变量被认为为NULL。
变量占用内存
echo $m1 = memory_get_usage();
// 获取当前PHP消耗的内存,结果:624432,
// 在变量中,由于变量占用的空间单元不一样(占的地盘大小不一样),分成几种数据类型。
详见:https://www.imooc.com/code/743
三、常量
常量可以理解为值不变的量(如圆周率);
或者是常量值被定义后,在脚本的其他任何地方都不可以被改变。分为自定义常量和系统常量
自定义常量
根据我们开发的需要,而定义的常量,它通过使用PHP中的函数define()定义。
(注:函数,我们可以理解为一个混凝土搅拌机,亦或是一个筛子,通过入口提供原料,然后出口产出结果,在函数中也允许入口不提供任何数据,出口也允许不返回任何值。)
// define()函数的语法格式为(3个参数):
bool define(string $constant_name, mixed $value[, $case_sensitive = true])
//“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致,但是要注意哦,它可不带美元符号哦。
//“value”为必选参数,它是常量的值。
//“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false。
注:
string表示参数类型为字符串类型,
mixed表示参数类型可以接受为多种不同的类型,
case_sensitive = true表示默认为布尔类型TRUE
如:
$p = "PII";
define("PI",3.14);
define($p,3.14);
echo PI;
echo "<br />";
echo PII;
结果:
3.14
3.14
常量的作用
常量主要功效是可以避免重复定义,篡改变量值。在我们进行团队开发时,或者代码量很大的时候,对于一些第一次定义后不改变的量,如果我们使用变量,在不知情的情况下,使用同一变量名时,变量值就会被替换掉,从而会引发服务器执行错误的任务。
此外,使用常量还能提高代码的可维护性。如果由于某些原因,常量的值需要变更时候,我们只需要修改一个地方。例如在做计算中,起初我们取圆周率为3.14,于是很多计算中我们都使用3.14进行计算,当要求计算精度提高,圆周率需要取3.142的时候,我们不得不修改所有使用3.14的代码,倘若代码量比较多时,不仅工作量大,还可能遗漏。
系统常量
系统常量是PHP已经定义好的常量,我们可以直接拿来使用,常见的系统常量有:
echo __FILE__;
// php程序文件名。它可以帮助我们获取"当前文件在服务器的物理位置"。
echo __LINE__;
// PHP程序文件行数。它可以告诉我们,"当前代码在第几行"。
echo PHP_VERSION;
// 当前解析器的版本号。可以提前知道"PHP代码是否可被该PHP解析器解析"。
echo PHP_OS;
// 执行当前PHP版本的操作系统名称。"服务器所用的操作系统名称",可以根据该操作系统优化我们的代码。
常量取值
获取常量值的有两种方法取值。
第一种是使用常量名直接获取值;例如计算圆周率的面积:
define("PI",3.14);
$r=1;
$area = PI*$r*$r; //计算圆的面积
第二种是使用constant()函数。它和直接使用常量名输出的效果是一样的,
但函数可以动态的输出不同的常量,在使用上要灵活、方便,其语法格式如下:
$p="";
//定义圆周率的两种取值
define("PI1",3.14);
define("PI2",3.142);
//定义值的精度
$height = "中";
//根据精度返回常量名,将常量变成了一个可变的常量
if($height == "中"){
$p = "PI1";
}else if($height == "低"){
$p = "PI2";
}
$r=1;
echo $p; // 若不使用constant,输出的就是Pi1
$area= constant($p)*$r*$r;
echo $area;
mixed constant(string constant_name)
第一个参数constant_name为要获取常量的名称,也可为存储常量名的变量。
如果成功则返回常量的值,失败则提示错误信息常量没有被定义。
(注:mixed表示函数返回值类型为多种不同的类型,string表示参数类型为字符串类型)
判定常量是否被定义
如果常量被重复定义以后,PHP解析器会发出“Constant XXX already defined”的警告,
提醒我们该常量已经被定义过。在团队开发,或代码量很大的情况下,如何去判定一个常量是否被定义呢?
defined()函数可以帮助我们判断一个常量是否已经定义,其语法格式为:
define("PI1",3.14);
$p = "PI1";
$is1 = defined($p);
$is2 = defined("PI2");
var_dump($is1);
var_dump($is2);
结果:
bool(true)
bool(false)
//其中,赋值给$p目的就是间接来表明PI1已经被定义,所以$is1 = defined(PI1);亦可行。
// define方法是定义一个常量的方法,返回的是该已定义的常量;
// defined方法是判断一个常量是否定义,返回的是一个bool值(true/false)。
bool defined(string constants_name)
它只有参数constant_name,指的是要获取常量的名称,若存在则返回布尔类型true,否则返回布尔类型false; (注:bool表示函数返回值类型为布尔类型)
四、运算符
分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符、字符串连接运算符、错误控制运算符。
算术运算符:
加法运算、减法运算、乘法运算、除法运算
赋值运算符:
(1)“=”:把右边表达式的值赋给左边的运算数。它将右边表达式值复制一份,交给左边的运算数。
换而言之,首先给左边的运算数申请了一块内存,然后把复制的值放到这个内存中。
(2)“&”:引用赋值,意味着两个变量都指向同一个数据。
它将使两个变量共享一块内存,如果这个内存存储的数据变了,那么两个变量的值都会发生变化。
$a = "学习PHP!";
$b = $a;
$c = &$a;
$a = "我天天在学习PHP!";
echo $b."<br />";
echo $c."<br />";
结果:
学习PHP!
我天天在学习PHP!
比较运算符
三元运算符
(“?:”)三元运算符也是一个比较运算符,
对于表达式(expr1)?(expr2):(expr3),如果expr1的值为true,则此表达式的值为expr2,否则为expr3。
$a = 78;//成绩
$b = $a >= 60 ? "及格": "不及格";
echo $b;
结果:及格
逻辑运算符
1、逻辑与:要求所有人都投票同意,才会通过某协议;
2、逻辑或:只要求一个人投票同意就行;
3、逻辑异或:只能有且只能有一个人投票同意;
4、逻辑非:某个人要反对,但是通过逻辑非,使其反对无效;
“与”和“或”有两种不同形式运算符的原因是它们运算的优先级(就是运算的有限顺序,比如我们小学的时候学习四则运算,加减乘除混合在一起啦,优先计算乘除,再计算加减)不同。
字符串连接运算符
(1)连接运算符(“.”):它返回将右参数附加到左参数后面所得的字符串。
$a = "张先生";
$tip = $a.",欢迎您在慕课网学习PHP!";
echo $tip."<br />";
结果:
张先生,欢迎您在慕课网学习PHP!
(2)连接赋值运算符(“.=”):它将右边参数附加到左边的参数后。
$b = "东边日出西边雨";
$b .= ",道是无晴却有晴";
$c = "东边日出西边雨";
$c = $c.",道是无晴却有晴";
echo $b."<br />";
echo $c."<br />";
结果:
东边日出西边雨,道是无晴却有晴
东边日出西边雨,道是无晴却有晴
错误控制运算符
PHP中提供了一个错误控制运算符“@”,对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉;
如果激活了track_error(这个玩意在php.ini中设置)特性,表达式所产生的任何错误信息都被存放在变量$php_errormsg中,此变量在每次出错时都会被覆盖,所以如果想用它的话必须尽早检查。
需要注意的是:错误控制前缀“@”不会屏蔽解析错误的信息,不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等。
$conn = @mysql_connect("localhost","username","password");
// 这样就不会报错并打印出来
取整函数
ceil() 函数向上舍入为最接近的整数。
echo(ceil(0.60);
echo(ceil(0.40);
echo(ceil(5);
echo(ceil(5.1);
echo(ceil(-5.1);
echo(ceil(-5.9));
输出:
1
1
5
6
-5
-5
五、顺序结构
顺序结构就像一条直线,按着顺序一直往下执行。我们编写的代码默认都是按照顺序结构执行的。
条件结构:
if…else…
if(条件){
//分配服务器干的任务A
}else{
//分配服务器干的任务B
}
if…else if…
if(条件一){
//分配服务器干的任务A
}else if(条件二){
//分配服务器干的任务B
}
if…else if…else…
if(条件一){
//分配服务器干的任务A
}else if(条件二){
//分配服务器干的任务B
}else{
//分配服务器干的任务C
}
当两个条件对立时用if…else,当两个条件不存在对立关系时用if…else if…
switch…case…
switch (条件)
{
case 条件值一:
//任务一
break;
case 条件值二:
//任务二
break;
default:
//默认任务
}
switch…case…中的break:
break的作用是结束switch,亦可以避免冗长的 “if..else if..else”代码块。
//A例子
$num = 2;
$sum = 10;
switch($num){
case 1:
$sum = $sum + 10;
break;
case 2:
$sum = $sum + 10;
break;
case 3:
$sum = $sum + 10;
break;
default:
$sum = $sum + 10;
}
echo "A例子的值是:".$sum."<br />";
结果:A例子的值是:20
// 直接查询到num为2,sum加10后即刻break,跳出查找。
//B例子
$num = 2;
$sum = 10;
switch($num){
case 1:
$sum = $sum + 10;
case 2:
$sum = $sum + 10;
case 3:
$sum = $sum + 10;
default:
$sum = $sum + 10;
}
echo "B例子的值是:".$sum."<br />";
结果:B例子的值是:40
//查询到num为2后,sum加10,因为没break,继续执行case3,加了10,再执行了defailt。
while循环语句
while(条件){
//执行任务
}
首先判断某个条件是否符合(条件返回值是否为TRUE),
若符合则执行任务,执行完毕任务,再判断条件是否满足要求,符合则重复执行此任务,否则结束任务。
do while循环语句
do{
//执行任务
}while(条件)
首先执行任务(while语句是先判断条件是否成立,再执行任务),执行任务完毕,判断某个条件是否符合(条件返回值是否为TRUE),若符合则再次执行任务,执行完毕任务,继续判定条件。
while与do…while循环语句的区别:
while先判断条件是否成立,后执行循环,do...while先执行一次任务,再判断是否继续执行循环,也就是说do...while至少会执行一次任务。当条件为FALSE时,while中的任务会一次也不执行,do...while中的任务会执行1次。
for循环语句
for(初始化;循环条件;递增项){
//执行任务
}
for($i = 1,$i<=100;$i++){
echo "666";
}
for 语句中,“初始化”在循环开始前无条件求值一次,“循环条件”在每次循环开始前求值。如果值为 TRUE,则继续循环,执行循环体语句(执行任务)。如果值为 FALSE,则终止循环。“递增项”在每次循环之后被求值(执行)。其常用于循环执行代码块指定的次数。
foreach循环语句
常用于遍历数组,一般有两种使用方式:不取下标、取下标。
//eg
$students = array(
'2010'=>'令狐冲',
... ...
... ...
'2019'=>'宁中则',
);//10个学生的学号和姓名,用数组存储
(1)只取值,不取下标
foreach (数组 as 值){
//执行的任务
}
//使用循环结构遍历数组,获取学号和姓名
foreach($students as $v)
{
echo $v;//输出(打印)姓名
echo "<br />";
}
(2)同时取下标和值
foreach (数组 as 下标 => 值){
//执行的任务
}
//使用循环结构遍历数组,获取学号和姓名
foreach($students as $key =>$v)
{
echo $key.":".$v;//输出(打印)学号:姓名
echo "<br />";
}
?>
结构嵌套
条件嵌套
if里加if,
if (条件)
{
if 条件成立时执行的代码;
}
elseif (条件)
{
elseif 条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}
循环嵌套
常用于遍历二维数组。
$students = array(
'2010'=>array('令狐冲',"59"),
... ...
... ...
'2019'=>array('宁中则',"90"),
);//10个学生的学号、姓名、分数,用数组存储
foreach($students as $key=>$val)
{ //使用循环结构遍历数组,获取学号
echo $key; //输出学号
echo ":";
//循环输出姓名和分数
foreach($val as $v)
{
echo $v;
}
echo "<br />";
}
#循环结构与条件结构嵌套
$students = array(
'2010'=>'令狐冲',
... ...
... ...
'2019'=>'宁中则',
);//10个学生的学号和姓名,用数组存储
$query = '2014';
//使用循环结构遍历数组,获取学号和姓名
foreach($students as $key =>$v)
{
//使用条件结构,判断是否为该学号
if($key == $query)
{
echo $v;//输出(打印)姓名
break;//结束循环(跳出循环)
}
}
在执行任务时,对于一些特殊的任务进行额外处理。
扩展学习:
PHP进阶篇-字符串操作:http://www.imooc.com/learn/726
来源:慕课网,内容持续更新中...
为什么有了这么完备的“慕课网学习系统”,还要做个复制粘贴呢?
1.这是一个笔记,是慕课课程的提炼,为学精一门语言而开辟的一个学习笔记文章。
2.再好的学习平台,也可能会有结束的一天,所以我现在做的事情,可能可以为优秀的平台在茫茫的互联网长河中留下一点点痕迹。