手记

重新梳理——PHP入门基础笔记2

第三章 常量

3-1、PHP—什么是常量

常量可以理解为值不变的量(如圆周率);
或者是常量值被定义后,在脚本的其他任何地方都不可以被改变。
php中的常量分为自定义常量和系统常量

自定义常量是根据我们开发的需要而定义的常量,
它通过使用php中的函数define()定义。

常量的命名规则与变量的一致,但是是不需要带美元符号的。

define()函数的语法格式为:
bool define(string $constant_name, mixed $value[, $case_sensitive = true])
它有3个参数:
第一个参数$constant_name为必选参数,常量名称,即标志符。
第二个参数$value为必选参数,它是常量的值。
第三个参数$case_sensitive为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false。
(注:string表示参数类型为字符串类型, mixed表示参数类型可以接受为多种不同的类型, case_sensitive=true表示默认为布尔类型true)

代码示例

<?php
    $p = "PII";
    define("PI",3.14);
    define($p,3.14);
    echo PI;  // 此结果为:3.14
    echo "<br />";
    echo PII; // 此结果为:3.14
?>

3-2、PHP-常量的作用

常量主要功效是可以避免重复定义,篡改变量值。
此外,使用常量还能提高代码的可维护性。

代码示例

<?php
    define("PI",3.14);
    $r=3;
    echo "面积为:".(PI*$r*$r)."<br />";
    echo "周长为:".(2*PI*$r)."<br />";
?>

3-3、PHP-认识一下系统常量

系统常量是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 />";
?>

3-4、PHP-常量如何取值

获取常量值的有两种方法取值。
第一种是使用常量名直接获取值;
第二种是使用constant()函数。
它和直接使用常量名输出的效果是一样的,但函数可以动态的输出不同的常量,在使用上要灵活、方便,其语法格式如下:
mixed constant(string constant_name)
第一个参数constant_name为要获取常量的名称,
也可为存储常量名的变量。
如果成功则返回常量的值,失败则提示错误信息常量没有被定义。
(注:mixed表示函数返回值类型为多种不同的类型,string表示参数类型为字符串类型)

代码示例

<?php
    define("PI",3.14);
    $r=1;
    $area=constant("PI")*$r*$r; // 计算圆的面积
?>

<?php 
    $p="";
    //定义圆周率的两种取值
    define("PI1",3.14);
    define("PI2",3.142);
    //定义值的精度
    $height = "中";
    //根据精度返回常量名,将常量变成了一个可变的常量
    if($height == "中"){
        $p = "PI1";
    }else if($height == "低"){
        $p = "PI2";
    }
    $r=1;
    $area = constant($p)*$r*$r; // 计算圆的面积
    echo $area;
?>

3-5、PHP-如何判定常量是否被定义

defined()函数可以帮助我们判断一个常量是否已经定义,其语法格式为:
bool defined(string constants_name)
它只有参数constant_name,指的是要获取常量的名称,
若存在则返回布尔类型true,否则返回布尔类型false;
(注:bool表示函数返回值类型为布尔类型)

代码示例

<?php 
    define("PI1",3.14);
    $p = "PI1";
    $is1 = defined($p);
    $is2 = defined("PI2");
    var_dump($is1); // PI1已经被定义了,所以此结果为:bool(true)
    var_dump($is2); // PI2没有被定义,所以此结果为:bool(false)
?>
第四章 PHP中常用的运算符

4-1、什么是运算符

运算符 是告诉php做相关运算的标识符号。
php运算符一般分为:
    算术运算符 +加法、-减法、*乘法、/除法、%取模、-取反
    赋值运算符 =赋值、&引用赋值、=>数组内赋值
    比较运算符 ==等于、===全等、!=不等、<>不等、!==不全等、<小于、>大于、<=小于等于、>=大于等于
    三元运算符 ?:三元比较运算
    逻辑运算符 and逻辑与、or逻辑或、xor逻辑异或、!逻辑非、&&逻辑与、||逻辑或
    字符串连接运算符 .连接运算符、.=连接赋值运算符
    错误控制运算符 @错误控制运算符

4-2、PHP中的算术运算符

算术运算符 主要是用于进行算术运算的

算术运算符   名称      示例     结果         举例:  
+   加法      $a+$b   $a和$b的和     3+4=7
-   减法      $a-$b   $a和$b的差     6-4=2
*   乘法      $a*$b   $a和$b的积     3*7=21
/   除法      $a/$b   $a和$b的商     8/2=4
%   取模      $a%$b   $a除以$b的余数   6%3=0

取模算术符有啥用呢?

假设我们要在一个考场安排了一场考试,
对考生从1开始,都进行了编号,
那么怎么让服务器帮助我们计算考生在的位置呢,
进而打印考场的考生对照表呢?

代码示例

<?php 
     $maxLine = 4; //每排人数
     $no = 17;//学生编号
     $line = ceil($no/$maxLine);
     $row = $no%$maxLine ? $no%$maxLine : $maxLine;

     echo "编号<b>".$no."</b>的座位在第<b>".$line."</b>排第<b>".$row."</b>个位置";  // 此结果为:编号17的座位在第5排第1个位置
?>

4-3、PHP中的赋值运算符

php的赋值运算符有两种,分别是:
(1)"=":把右边表达式的值赋给左边的运算数。
        它将右边表达式值复制一份,交给左边的运算数。
        换而言之,首先给左边的运算数申请了一块内存,
        然后把复制的值放到这个内存中。
(2)"&":引用赋值,意味着两个变量都指向同一个数据。
        它将使两个变量共享一块内存,
        如果这个内存存储的数据变了,
        那么两个变量的值都会发生变化。

代码示例

<?php 
    $a = "我在慕课网学习PHP!";
    $b = $a;
    $c = &$a;
    $a = "我天天在慕课网学习PHP!";

    echo $b."<br />";  // 此结果为:我在慕课网学习PHP!
    echo $c."<br />";  // $c引用了$a变量,$a被重新赋值了,所以此结果为:我天天在慕课网学习PHP!
?>

4-4、PHP中的比较运算符

比较运算符 主要是用于进行比较运算的。

比较运算符   名称      示例      结果
==          等于      $a==$b  如果$a等于$b,返回true。
===         全等      $a===$b 如果$a等于$b,并且它们的类型也相等,返回true。
!=          不等      $a!=$b  如果$a不等于$b,返回true。
<>          不等      $a<>$b  如果$a不等于$b,返回true。
!==         非全等 $a!==$b 如果$a不等于$b,或者它们的类型不同,返回true。
<           小于      $a<$b   如果$a严格小于$b,返回true
>           大于      $a>$b   如果$a严格大于$b,返回true
<=          小于等于        $a<$b   如果$a小于或者等于$b,返回true
>=          大于等于        $a<$b   如果$a大于或者等于$b,返回true

4-5、PHP中的三元运算符

?: 三元运算符也是一个比较运算符,
对于表达式(expr1)?(expr2):(expr3),
如果exp1的值为true,则此表达式的值为expr2,否则为expr3。

代码示例

<?php 
    $a = 78; // 成绩
    $b = $a>=60 ? "及格":"不及格";
    echo $b;  // 此结果为:及格
    // 其expr1的作用是判断$a值是否大于60,若大于60,则$b变量的值为expr2的值“及格”,若小于60,则$b变量的值为expr3的值“不及格”
?>

4-6、PHP中的逻辑运算符

逻辑运算符 主要是用来进行逻辑运算的

例子              名称              结果
$a and $b       and(逻辑与)        如果$a与$b都为true,返回true。
$a or $b        or(逻辑或)     如果$a或$b任一为true,返回true
$a xor $b       xor(逻辑异或)   如果$a与$b有且仅有一个为true,返回true
!$a             not(逻辑非)        如果$a不为true,返回true
$a&&$b          and(逻辑与)        如果$a与$b都为true,返回true
$a||$b          or(逻辑或)     如果$a或$b任一为true,返回true

我们可以从投票的角度来理解逻辑运算:

1、逻辑与:要求所有人都投票同意,才会通过某协议;

2、逻辑或:只要求一个人投票同意就行;

3、逻辑异或:只能有且只能有一个人投票同意;

4、逻辑非:某个人要反对,但是通过逻辑非,使其反对无效;

“与”和“或”有两种不同形式运算符的原因是它们运算的优先级(就是运算的有限顺序,比如我们小学的时候学习四则运算,加减乘除混合在一起啦,优先计算乘除,再计算加减)不同。

代码示例

<?php 
    $a = TRUE; //A同意
    $b = TRUE; //B同意
    $c = FALSE; //C反对
    $d = FALSE; //D反对
    //咱顺便复习下三元运算符
    echo ($a and $b) ? "通过" : "不通过"; // 逻辑与  此结果为:通过
    echo "<br />";
    echo ($a or $c) ? "通过" : "不通过"; // 逻辑或  此结果为:通过
    echo "<br />";
    echo ($a xor $c xor $d) ? "通过" : "不通过"; // 逻辑异或  此结果为:通过
    echo "<br />";
    echo !$c ? "通过" : "不通过"; // 逻辑非  此结果为:通过
    echo "<br />";
    echo $a && $d ? "通过" : "不通过"; // 逻辑与  此结果为:不通过
    echo "<br />";
    echo $b || $c || $d ? "通过" : "不通过"; // 逻辑或  此结果为:通过
?>

4-7、PHP中的字符串连接运算符

字符串连接运算符 是为了将两个字符串进行连接,php中提供的字符串连接运算符有:
(1)、. 连接运算符:它返回将右参数附加到左参数后面所得的字符串
(2)、.= 连接赋值运算符:它将右边参数附加到左边的参数后。

4-8、PHP中的错误控制运算符

PHP中提供了一个错误控制运算符“@”,
对于一些可能会在运行过程中出错的表达式时,
我们不希望出错的时候给客户显示错误信息,这样对用户不友好。
于是,可以将@放置在一个PHP表达式之前,
该表达式可能产生的任何错误信息都被忽略掉;

如果激活了track_error(这个玩意在php.ini中设置)特性,
表达式所产生的任何错误信息都被存放在变量$php_errormsg中,
此变量在每次出错时都会被覆盖,所以如果想用它的话必须尽早检查。

需要注意的是:
    错误控制前缀“@”不会屏蔽解析错误的信息,
    不能把它放在函数或类的定义之前,
    也不能用于条件结构例如if和foreach等。

代码示例

<?php  
     $conn = @mysql_connect("localhost","username","password");
     echo "出错了,错误原因是:".$php_errormsg;
?>
第五章 语言结构语句

5-1、PHP-顺序结构

顺序结构 就像一条直线,按着顺序一直往下执行。我们编写的代码默认都是按照顺序结构执行的。

代码示例

<?php
    $shoesPrice = 49; //鞋子单价
    $shoesNum = 1; //鞋子数量
    $shoesMoney = $shoesPrice * $shoesNum;

    $shirtPrice = 99; //衬衣单价
    $shirtNum = 2; //衬衣数量
    $shirtMoney = $shirtPrice * $shirtNum;

    $orderMoney = $shoesMoney + $shirtMoney;
    echo $orderMoney;  // 此结果为:247
?>

5-2、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){
        $money = $money * $discount;
    }else{
        $money = $money * 1;
    }

    echo $money;
?>

5-3、PHP条件结构之 if...else if...

<?php
    if(条件一){
         //分配服务器干的任务A
    }else if(条件二){
         //分配服务器干的任务B
    }
?>

通过条件一判断,
若返回值为布尔值为TRUE,则执行任务A,
若返回值为FALSE,则判断条件二,
若返回值为布尔值TRUE,则执行任务B,
否则既不执行任务A,也不执行任务B。
服务器会继续往下执行其他任务。

代码示例

<?php
    $totalMoney = 0;//总工资
    $basicMoney =  2000;//基本工资
    $sex = "男";
    if($sex == "男"){
        $totalMoney = $basicMoney  + 0;// 男的没奖金
    }else if($sex == "女"){
        $totalMoney = $basicMoney  + 300;// 女的有奖金300元
    }
    echo $totalMoney;  // 此结果为:2000
?>

5-4、PHP条件结构之 if...else if...else...

<?php
    if(条件一){
         //分配服务器干的任务A
    }else if(条件二){
         //分配服务器干的任务B
    }else{
         //分配服务器干的任务C
    }
?>

通过条件一判断,
若返回值为布尔值TRUE,则执行任务A,
若返回值为FALSE,则判断条件二,
若返回值为布尔值TRUE,则执行任务B,
否则既不执行任务A,也不执行任务B,执行任务C。

<?php
    date_default_timezone_set('asia/shanghai');
    $week = date("w");//获取当天星期几
    $info = "";//提示信息
    if($week == 1){
        $info = "上午有课";
    }else if($week == 3){
        $info = "下午有课";  
    }else{
        $info = "今天没课";
    }
    echo $info; //输出提示信息
?>

5-5、PHP条件结构之 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; //输出是否中奖
?>

5-6、PHP条件结构之 switch...case...中的break

break的作用是阻止代码进入下一个case 中继续执行。

代码示例

<?php
    // 通过A例子有break和B例子没有break可以很明显地看出它的作用。

    //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 />"; // 此结果为:20

    //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 />"; // 此结果为:40
?>

5-7、PHP中循环结构之 while循环语句

循环结构 就像一圈圈地跑足球场,跑完一圈再跑一圈。
也就是说,在符合的条件下,重复执行某项任务。
像400米一圈的跑道,跑800米的话就跑2圈,
当跑完第一圈接着跑第二圈,
第二圈结束已经达到800米,终止跑步。

<?php
    while(条件){ 
         //执行任务
    }
?>

首先判断某个条件是否符合(条件返回值是否为TRUE),
若符合则执行任务,执行完毕任务,
再判断条件是否满足要求,
符合则重复执行此任务,否则结束任务。

代码示例

<?php
    $sum = 12;//小宠物当前的饥饿程度
    echo "我饿啦:-(";
    echo "<br />";
    while($sum<100){//小宠物的饥饿程度到100,表示小宠物吃饱啦,不用继续喂了,没吃饱继续喂食
        $num = rand(1,20);//随机数,模拟喂食小宠物的小面包
        $sum = $sum + $num; //小宠物吃小面包
        echo "我还没吃饱呢!";
        echo "<br />";
    }
    echo "终于吃饱啦^_^";
?>

5-8、PHP中循环结构之 do while循环语句

<?php
    do{ 
         //执行任务
    }while(条件)
?>

首先执行任务(上一节的while语句是先判断条件是否成立,再执行任务),
执行任务完毕,
判断某个条件是否符合(条件返回值是否为TRUE),
若符合则再次执行任务,
执行完毕任务,继续判定条件。

代码示例

<?php
    $i =  1 ; //从第1圈开始跑
    do{  //跑10圈
        echo "在跑第".$i."圈。";
        $i++;
    }while($i<=10);
?>

5-9、PHP中循环结构之 while 与 do...while语句的区别

while与do…while循环语句的区别是,
while先判断条件是否成立,后执行循环,
do...while先执行一次任务,再判断是否继续执行循环,
也就是说do...while至少会执行一次任务。
当条件为FALSE时,while中的任务会一次也不执行,
do...while中的任务会执行1次。

代码示例

<?php
    //A例子
    $num = 2;
    $sum  = 10; 
    while($num>3){
        $sum = $sum  + 10;
    }
    echo "A例子的结果:".$sum."<br />"; // 此结果为:10

    //B例子
    $num = 2;
    $sum  = 10;         
    do{
        $sum = $sum  + 10;
    }while($num>3);
    echo "B例子的结果:".$sum."<br />"; // 此结果为:20
?>

5-10、PHP中循环结构之 do...while语句的运用优势举例

while和do...while可以根据具体情况选用。
假设有一种棋类游戏,首先掷骰子,
若不为6,前进骰子的点数的步长;
若为6,前进骰子的点数的步长,并可以再掷一次。

代码示例

<?php
    //while例子
    $sum  = 0; 
    $num = rand(1,6); //获取1至6的随机数,模拟掷骰子
    $sum = $sum  + $num;//前进步长
    while($num==6){
        $num = rand(1,6);//获取1至6的随机数,模拟掷骰子
        $sum = $sum  + $num;//前进步长
    };
    echo "while例子执行完毕,前进:".$sum ."<br />";  // 此结果为:2

    //do...while例子
    $sum  = 0; 
    do{
        $num = rand(1,6);//获取1至6的随机数,模拟掷骰子
        $sum = $sum  + $num;//前进步长
    }while($num==6);
    echo "do...while例子执行完毕,前进:".$sum ."<br />";  // 此结果为:10
?>

5-11、PHP中循环结构之 for循环语句

<?php
    for(初始化;循环条件;递增项){
          //执行任务
    }
?>

for 语句中,
“初始化”在循环开始前无条件求值一次,
“循环条件”在每次循环开始前求值。
如果值为 TRUE,则继续循环,执行循环体语句(执行任务)。
如果值为 FALSE,则终止循环。
“递增项”在每次循环之后被求值(执行)。
其常用于循环执行代码块指定的次数。

代码示例

<?php
    //for语句写法
    for($i = 1,$sum = 0;$i <= 100;$i++){
        $sum = $sum + $i; //    累加求和
    }
    echo "for语句的运行结果:".$sum."<br />" ;  // 此结果为:5050

    //while语句写法
    $i =  1 ; // 从1开始累加
    $sum = 0; //初始化和为0
    while($i<=100){  //判断是否小于100
        $sum = $sum + $i; //    累加求和
        $i++; //递增1
    }
    echo "while语句的运行结果:".$sum."<br />" ;  // 此结果为:5050
?>

5-12、PHP中循环结构之 foreach循环语句

在PHP中foreach循环语句,常用于遍历数组,
一般有两种使用方式:不取下标、取下标。

(1)、只取值,不取下标
<?php
     foreach (数组 as 值){
    //执行的任务
    }
?>

(2)、同时取下标和值
<?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 />";
    }

    //使用循环结构遍历数组,获取学号和姓名  
    foreach($students as $key => $v){ 
        echo $key.":".$v;//输出(打印)学号:姓名
        echo "<br />";
    }
?>

5-13、PHP中结构嵌套之 条件嵌套

条件结构嵌套就像回家的路上会遇到多个十字路口。

代码示例

<?php
    $totalMoney = 0;//总工资
    $basicMoney =  300;//基本工资
    $sex = "男";
    $noHouse = TRUE; //是否有房
    $houseMoney =  150;//住房补贴
    $isPregnancy = TRUE; //是否怀孕
    $pregnancyMoney =  100;//怀孕补贴

    if($sex == "男"){
        $totalMoney = $basicMoney  + 0;// 男的没奖金
        if($noHouse){
            $totalMoney = $totalMoney  + $houseMoney;
        } 
    }else if($sex == "女"){
        $totalMoney = $basicMoney  + 300;// 女的有奖金300元
        if($isPregnancy){
            $totalMoney = $totalMoney  + $pregnancyMoney;
        } 
    }

    echo $totalMoney;
?>

5-14、PHP中结构嵌套之 循环嵌套

循环结构嵌套,就是类似于跑多个足球场,
例如假设有两个足球场,一个大足球场,一个小足球场,
在大足球场跑一圈后,再到小足球场跑几圈,
跑完几圈后,再到大足球场中继续跑。
在遍历二维数组中很常用。

代码示例

<?php
     $students = array(
        '2010'=>array('令狐冲',"59"),
        '2011'=>array('林平之',"44"),
        '2012'=>array('曲洋',"89"),
        '2013'=>array('任盈盈',"92"),
        '2014'=>array('向问天',"93"),
        '2015'=>array('任我行',"87"),
        '2016'=>array('冲虚',"58"),
        '2017'=>array('方正',"74"),
        '2018'=>array('岳不群',"91"),
        '2019'=>array('宁中则',"90"),
    );//10个学生的学号、姓名、分数,用数组存储

    foreach($students as $key=>$val){ //使用循环结构遍历数组,获取学号 
         echo $key; //输出学号
         echo ":";
         //循环输出姓名和分数
         foreach($val as $v){
            echo $v; 
         }
         echo "<br />";
    }
?>

5-15、PHP中结构嵌套之 循环结构与条件结构嵌套

有时候在执行任务时,
对于一些特殊的任务还需要进行额外处理,
这个时候就会将循环结构与条件结构嵌套使用。

代码示例

<?php
     $students = array(
        '2010'=>'令狐冲',
        '2011'=>'林平之',
        '2012'=>'曲洋',
        '2013'=>'任盈盈',
        '2014'=>'向问天',
        '2015'=>'任我行',
        '2016'=>'冲虚',
        '2017'=>'方正',
        '2018'=>'岳不群',
        '2019'=>'宁中则',
    );//10个学生的学号和姓名,用数组存储
    $query = '2014';
    //使用循环结构遍历数组,获取学号和姓名
    foreach($students as $key =>$v){ 
        //使用条件结构,判断是否为该学号
        if($key == $query){ 
            echo $v;//输出(打印)姓名
            break;//结束循环(跳出循环)
        }
    }
?>
0人推荐
随时随地看视频
慕课网APP