**********************
一、什么是PHP?优点有哪些?
什么是php?
一般来讲:前端页面的普通特效用(例如移入移出)js就可以实现,但是如果是涉及到存储在服务器端的信息(例如点击量,点赞 数)时,就需要编程语言了,而php就是其中一种编程语言因为他是运行在服务器端的脚本语言
优点?
有许多编程语言,那么为什么要选择php 跨平台性:支持多种操作系统 编程语言:用代码实现指令 免费: 运行在服务器端:
二、基础语法知识
标识
js使用时,需要将代码写在<script></script>标签中,同样的,php需要写在<?php ?>中,其中结尾的?>是可以省略的 ; 在结束时一定加上";"分号
输出语句 echo
<?php echo "Hello world!";?>计算
在php中是可以进行运算的;
例如:
<?php echo 12*3;?>
字符串
字符串显示,单引双引都是可以的;其中'.'是连接符 可以将两个字符串拼接起来; 例子: <?php echo '你好'.'我是';?>
注释
php中用“//”注释变量
用来存储;用“$”符号声明 例: <?php $var='大家好'; echo $var; echo "<br />"; $var='nihao'; echo $var; ?> 命名规则数据类型1、变量名必须以字母或下划线 “_”开头,如”$_name”,”$name” ,”$name2”等,但是”$9name”是不对的。
2、变量名只能由字母、数字、以及“_”组成,还能包含汉字。如”$_qq”,”$qq308” ,”$my_apple”,“比如"$name我等”,但是”$name*”是不对的。
3、变量名不允许包含空格。当变量名由多个单词组成,建议使用“_”进行分隔(比如 $my_apple),俗称下划线法,或者以大写字母开头比如 $myApple,俗称骆驼式命名法(也称驼峰命名法)。
特别需要注意的是,在PHP中变量名是区分大小写的,如“$my_book”与“$my_Book”代表两个不同的变量。
有8种原始类型,其中包括四种标量类型、两种复合类型和两种特殊类型。PHP是一门松散类型的语言,不必向PHP声明变量的数据类型,PHP会自动把变量转换为自动的数据类型; 布尔类型(boolean):只有两个值,一个是TRUE,另一个FALSE,可以理解为是或否。它不区分大小写,也就是说”TRUE”和“true”效果是一样的。主要用在条件结构(条件结构在后面部分会介绍)中,例如判断是否满足条件的时候,是用“true”表示满足,用“false”表示不满足。需要注意的是,当我们用”echo”指令输出布尔类型时,如果是“true”则输出的是“1”,“false”则什么也不输出。我们可以使用“var_dump”函数,获取它真正的数据类型。常量<?php $flag=TRUE; ?>整型(integer):类似于常见的整数。它可以用十进制、八进制、十六进制指定。十进制就是日常使用的数字;八进制,数字前必须加上“0”(这个0是阿拉伯数字0,可不是英文字母“欧”哦);十六进制,数字前必须加“0x” (这个0也是阿拉伯数字0,不是“欧”哦)。如:
<?php $data_int = 1234; // 十进制数 $data_int = -567; // 一个负数 $data_int = 0123; // 八进制数(等于十进制的 83) $data_int = 0x1a; // 十六进制数(等于十进制的 26) ?>可以用转义字符、或者用相反嵌套(双引中用单引,单引中用双引)浮点型(浮点数、双精度数或实数),也就是通常说的小数,可以用小数点或者科学计数法表示。科学计数法可以使用小写的e,也可以使用大写的E。例如:
<?php $num_float = 1.234; //小数点 $num_float = 1.2e3; //科学计数法,小写e $num_float = 7.0E-10; //科学计数法,大写E ?>但如果想要输出引号怎么办呢?字符串是由一系列字符组成,在PHP中,字符和字节一样,也就是说,一共有256种不同字符的可能性。
字符串型可以用三种方法定义:单引号形式、双引号形式和Heredoc结构形式。
<?php
$str_string1='单引号';
$str_string2="双引号";
echo $str_string1;
echo "<br />";
echo $str_string2;
?>
但如果输出的“$”怎么办?
在php中,单引号将输出字符,而双引号则输出的是变量
<?php
$love = "I love you!";
$string1="aa,$love";
$string2='aa,$love';
echo $string1;
echo "<br />";
echo $string2;
?>
那么如果字符串很长怎么办?
可以使用Heredoc结构形式的方法来解决该问题,首先使用定界符表示字符串(<<<),接着在“<<<“之后提供一个标识符
GOD,然后是字符串,最后以提供的这个标识符结束字符串。在赋值符号后,输入定界符“<<<”,接着是标识符,你可以用你
的女神作为标识符“GOD”,如第2行,也可以使用你喜欢的狗狗,“DOG”作为标识符,但是,结尾处的标识符也必须是一样
的。此外,在结尾的一行,如第7行,一定要另起一行,并且此行除了“GOD”,并以“;”号结束之外,不能有任何其他字符
,前后都不能有,包括空格,否则会出现错误。
例子:
<?php
$string1=<<<GOD
我有一只小毛驴,我从来也不骑。
有一天我心血来潮,骑着去赶集。
我手里拿着小皮鞭,我心里正得意。
不知怎么哗啦啦啦啦,我摔了一身泥.
GOD;
echo $string1;
?>
消耗的内存
初始化消耗了624056, 字符串消耗328, 整型和浮点型都是288, 数组消耗632。
通过使用“memory_get_usage”获取当前PHP消耗的内存。提到内存的消耗,就有了资源的概念。
资源(resource):资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。我们可以对资源进行操作(创建、使用和释放)。任何资源,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽。
NULL(NULL):NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL。
有没有疑问?echo和var_dump区别
var_dump 判断一个变量的类型与长度
echo仅输出变量或字串
理解为不变的值;PHP中的常量分为自定义常量和系统常量。 自定义常量是根据我们开发的需要,而定义的常量,它通过使用PHP中的函数define()定义 define(必选参-标识,必选参-值,可选-对大小写是否敏感-truefalse) 例子 <?php define('PI',3.14); $r=3; echo "面积为:".(PI*$r*$r)."<br />"; echo "周长为:".(2*PI*$r)."<br />"; ?>运算符那么常量应该如何取值? 第一种是使用常量名直接获取。系统常量是PHP已经定义好的常量,我们可以直接拿来使用,常见的系统常量有:
(1)__FILE__ :php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。
(2)__LINE__ :PHP程序文件行数。它可以告诉我们,当前代码在第几行。
(3)PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。
(4)PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码。
<?php echo __FILE__; echo "<br />"; echo __LINE__; echo "<br />"; echo PHP_VERSION; echo "<br />"; echo PHP_OS; echo "<br />"; ?><?php define("PI",3.14); $r=1; $area = PI*$r*$r; //计算圆的面积 ?>第二种是使用constant()函数。
<?php
define("PI",3.14);
$r=1;
$area=constant("PI")*$r*$r;
?>
那么如何判断常量已经被重复定义?
可以运用函数defined(常量名字);若存在则返回布尔类型true,否则返回布尔类型false
运算的符号;分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符、字符串连接运算符、错误控制运算符7类。 算术运算符 取模例子 <?php $maxLine = 4; //每排人数 $no = 17;//学生编号 $line=ceil($no/$maxLine); $row=$no%$maxLine?$no%$maxLine:$maxLine; //$row=$no%$maxLine; echo "编号<b>".$no."</b>的座位在第<b>".$line."</b>排第<b>".$row."</b>个位置"; ?> 这两种区别?有没有必要判断?语言结构语句$row=$no%$maxLine?$no%$maxLine:$maxLine; $row=$no%$maxLine;
赋值运算符(1)“=”:把右边表达式的值赋给左边的运算数。它将右边表达式值复制一份,交给左边的运算数。换而言之,首先给左边的运算数申请了一块内存,然后把复制的值放到这个内存中。
(2)“&”:引用赋值,意味着两个变量都指向同一个数据。它将使两个变量共享一块内存,如果这个内存存储的数据变了,那么两个变量的值都会发生变化。
<?php
$a = "我学习PHP!";
$b=$a;
$c=&$a;
$a = "我天天学习PHP!";
echo $b."<br />";
echo $c."<br />";
?>
比较运算符
三目运算符
(“?:”)三元运算符也是一个比较运算符,对于表达式(expr1)?(expr2):(expr3),如果expr1的值为true,则此表达式的值为 expr2,否则为expr3。$b = $a >= 60 ? "及格": "不及格";
逻辑运算符
连接运算符(1)连接运算符(“.”):它返回将右参数附加到左参数后面所得的字符串。
(2)连接赋值运算符(“.=”):它将右边参数附加到左边的参数后。
例子
<?php
$a = "张先生";
$tip=$a;
$tip=$a.',欢迎你!!';
$b = "东边日出西边雨";
$b.=',道是无情却有情';
$c = "东边日出西边雨";
$c=$c.',道是无情却有情';
echo $tip."<br />";
echo $b."<br />";
echo $c."<br />";
?>
错误控制运算符
错误控制运算符错误控制运算符“@”,对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉;
PHP中提供了一个错误控制运算符“@”,对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉;
如果激活了track_error(这个玩意在php.ini中设置)特性,表达式所产生的任何错误信息都被存放在变量$php_errormsg中,此变量在每次出错时都会被覆盖,所以如果想用它的话必须尽早检查。
需要注意的是:错误控制前缀“@”不会屏蔽解析错误的信息,不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等。
条件结构以上就是php入门了,大家可以下载php学习手册学习或者不会的时候查阅。PHP中的“if…else…”语法,如下:
<?php if(条件){ //分配服务器干的任务A }else{ //分配服务器干的任务B } ?>通过条件判断,若返回值为布尔值TRUE,则执行任务A,若返回值为FALSE,则执行任务B。
例子:
<?php
date_default_timezone_set('Asia/ShangHai');
$today = date('m-d',time());//获取当天日期
$birthday = "02-14";//生日
$money = 238;//消费金额
$discount = 0.8;//八折优惠
if($today==$birthday){
echo $money=$money*$discount;
}else{
echo $money=$money*1;
}
?>
“if…else if…”和“if…elseif…else…”同理。
“switch...case...”语法,如下:<?php switch (条件) { case 条件值一: //任务一 break; case 条件值二: //任务二 break; default: //默认任务 } ?>首先判断条件,若条件的返回值为条件值一,则执行任务一,若条件返回的值为条件值二,则执行任务二,若条件的返回值既不是条件值一也不是条件值二,则执行默认任务。break的作用是结束switch(后面会有专门举例说明),使用 switch 语句可以避免冗长的 “if..else if..else”代码块。
例子:
<?php
$num = rand(1,50);//获取1至50的随机数
$info = "";//提示信息
switch($num){
case 1 :
$info = "恭喜你!中了一等奖!";
break;
case 2 :
$info = "恭喜你!中了二等奖!";
break;
case 3 :
$info = "恭喜你!中了三等奖!";
break;
default:
$info = "很遗憾!你没有中奖!";
}
echo $info; //输出是否中奖
?>
break的作用是阻止代码进入下一个case 中继续执行。跳出循环语句。
循环语句在PHP中,while循环语句如下:
<?php while(条件){ //执行任务 } ?>首先判断某个条件是否符合(条件返回值是否为TRUE),若符合则执行任务,执行完毕任务,再判断条件是否满足要求,符合则重复执行此任务,否则结束任务。
例子:
<?php
$sum = 12;//小宠物当前的饥饿程度
echo "我饿啦:-(";
echo "<br />";
while($sum<100){//小宠物的饥饿程度到100,表示小宠物吃饱啦,不用继续喂了,没吃饱继续喂食
$num = rand(1,20);//随机数,模拟喂食小宠物的小面包
$sum = $sum + $num; //小宠物吃小面包
echo "我还没吃饱呢!";
echo "<br />";
}
echo "终于吃饱啦^_^";
?>在PHP中循环语句还有另一种:do...while循环语句语法如下:
<?php do{ //执行任务 }while(条件) ?>例子:
<?php
$i = 1 ; //从第1圈开始跑
do{ //跑10圈
echo "在跑第".$i."圈。";
$i++;
}while($i<=10)
?>
其中while和do while的区别是:do while不管条件是否成立,都会执行一遍在PHP中还有一种循环语句,for循环语句结构如下:
<?php for(初始化;循环条件;递增项){ //执行任务 } ?>for 语句中,“初始化”在循环开始前无条件求值一次,“循环条件”在每次循环开始前求值。如果值为 TRUE,则继续循环,执行循环体语句(执行任务)。如果值为 FALSE,则终止循环。“递增项”在每次循环之后被求值(执行)。其常用于循环执行代码块指定的次数
例子:
<?php
//for语句写法
$sum=0;
for($i=0;$i<100;$i++){//注意
$sum = $sum + $i; // 累加求和
}
echo "for语句的运行结果:".$sum."<br />" ;
?>在PHP中foreach循环语句,常用于遍历数组,一般有两种使用方式:不取下标、取下标。
(1)只取值,不取下标
<?php foreach (数组 as 值){ //执行的任务 } ?> 例子: <?php $students = array( '2010'=>'令狐冲', '2011'=>'林平之', '2012'=>'曲洋', '2013'=>'任盈盈', '2014'=>'向问天', '2015'=>'任我行', '2016'=>'冲虚', '2017'=>'方正', '2018'=>'岳不群', '2019'=>'宁中则', );//10个学生的学号和姓名,用数组存储 //使用循环结构遍历数组,获取学号和姓名 foreach($students as $v){ echo $v;//输出(打印)姓名 echo "<br />"; } ?>(2)同时取下标和值
<?php foreach (数组 as 下标 => 值){ //执行的任务 } ?>例子:
<?php
$students = array(
'2010'=>'令狐冲',
'2011'=>'林平之',
'2012'=>'曲洋',
'2013'=>'任盈盈',
'2014'=>'向问天',
'2015'=>'任我行',
'2016'=>'冲虚',
'2017'=>'方正',
'2018'=>'岳不群',
'2019'=>'宁中则',
);//10个学生的学号和姓名,用数组存储
//使用循环结构遍历数组,获取学号和姓名
foreach($students as $key =>$v){
echo $key.":".$v;//输出(打印)学号:姓名
echo "<br />";
}
?>