PHP入门学习笔记二

1. 常量定义

在整个运行过程中不变的值就为常量。

1.1 定义常量

define(常量名,值,是否区分大小写)函数定义常量,常量名建议都是大写。
例如如下代码:

<?php
    define('NAME', 'Counterrr');
    define('AGE', 18, true);
    echo NAME,'<br />',AGe;

效果如图:
在这里插入图片描述
定义常量不能用特殊字符定义,除非添加constant关键字调用,如下代码会报错:

<?php
    define('%%', 'Counterrr');
    echo %%;

在这里插入图片描述
利用constant关键字调用:
在这里插入图片描述
判断常量是否定义用defined(常量名),如下代码:

<?php
    define('NAME', 'Counterrr');
    if (!defined('NAME')) {
    
    
        echo '常量NAME未定义';
    }
    else {
    
    
        echo '常量NAME已定义';
    };

效果:
在这里插入图片描述
除此之外PHP中常量还可以用const关键字定义常量,如下代码:

<?php
    const NAME = 'Counterrr';
    echo NAME;

效果:
在这里插入图片描述

1.2 小结

  1. php中定义常量有两种方式,defineconst两种方式。
  2. 常量在运行过程中值不能重新定义,如果改变就会报错。
  3. 使用constant获取特殊字符的常量。
  4. defined用来判断常量是否定义过。

2. 预定义常量

php的预定义常量有很多,可以挑几个来打印看看,例如如下代码:

<?php
    echo PHP_VERSION,'<br>';
    echo PHP_OS, '<br>';
    echo PHP_INT_MAX, '<br>';

分别获取php版本号,系统,最大安全整数,效果如图:
在这里插入图片描述

3. 魔术常量

魔术常量是值可以变化的常量,魔术常量不能自己定义,只能是系统自带的。例如:__LINE__,如下代码进行打印:

<?php
    echo PHP_VERSION,'<br>';
    echo PHP_OS, '<br>';
    echo PHP_INT_MAX, '<br>';
    echo __LINE__,'<br>';
    echo __LINE__,'<br>';

效果如图:
在这里插入图片描述
发现两次输出的值不一样,这个魔术常量就是当前行的值。
常用的还有:
__DIR__:文件所在目录;
__FILE__:文件的完整路径和文件名;
更多的魔术常量可以点击这里查看。

4. 数据类型

php是弱类型语言,但是在7.0以后php支持了强类型,但是我们还是称它为弱类型语言。

4.1 基本类型(标准类型)

4.1.1 整型

存整数,常见有2进制(bin),8进制(oct),10进制(dec),16进制(hex)。在php中进制转换:

<?php
    echo decbin(10),'<br>'; # 十进制转二进制
    echo decoct(10), '<br>'; # 十进制转八进制
    echo dechex(10), '<br>'; # 十进制转十六进制
    echo bindec(1010),'<br>'; # 二进制转十进制
    echo octdec(12), '<br>'; # 八进制转十进制
    echo hexdec('a'), '<br>'; # 十六进制转十进制

效果如图:
在这里插入图片描述

4.1.2 浮点数

浮点数在内存中保存的是近视值,不能进行比较,有时候会算对,有时候算不准,例如如下代码:

<?php
    var_dump(0.9 == 1 - 0.1);
    echo '<br/>';
    var_dump(0.1 == 1 -0.9);

效果:
在这里插入图片描述
有时候算的对,有时候算不对。
可以用bccomp(第一个数,第二个数,比较的位数)进行浮点数的大小,返回值:
0:表示一样大;
1:表示左边的的数大;
-1:表示右边的数大;
例如如下代码:

<?php
    var_dump(bccomp(0.1, 1 - 0.9, 5));

效果:
在这里插入图片描述

4.1.3 布尔型,字符串

布尔型:
不能使用echoprint输出布尔型,使用var_dump输出布尔型。

字符串:
单引号,就是纯粹的字符串,双引号会进行真正换算。例:

<?php
    $name = 'Counterrr';
    echo '我的名字是$name <br/>';
    echo "我的名字是$name <br/>"; 

效果:
在这里插入图片描述
但是在双引号中$开头会将后面所有都解析成变量名,如下代码将报错:

<?php
    $name = 'Counterrr';
    echo '我的名字是$name <br/>';
    echo "$name是我的名字<br/>"; 

在这里插入图片描述
在php中可以使用双大花括号进行对变量取出,如下代码就可以解决这个问题了:

<?php
    $name = 'Counterrr';
    echo '我的名字是$name <br/>';
    echo "{
      
      $name}是我的名字<br/>"; 

效果如图:
在这里插入图片描述
其中${ 只要紧挨着就可以了,可以写成这种写法:${name},表示取出这个变量名:

<?php
    $name = 'Counterrr';
    echo '我的名字是$name <br/>';
    echo "${name}是我的名字<br/>"; 

效果如图:
在这里插入图片描述
如果要输出特殊符号,可以使用转义符号\进行转义打印。

字符串定界符: <<<定界符名称 定界符名字,定界符是以双引号的字符串(如果要是单引号的定界符,可以在定界符名称用单引号括起来,就代表单引号定界符(nowdoc)。默认是双引号定界符(heredoc)。):

<?php
    echo <<<zifu
    <strong>我是标签里的文本</strong>
    <em>我的字是斜的</em>
zifu;

在这里插入图片描述
字符串定界符注意事项:

  1. 开始符与名称必须紧挨着。
  2. 结束符必须独占一行且前后都不可有任何字符,包括空格。
  3. 结束符后面没有任何行或者代码会报错。

4.2 复合类型

4.2.1 数组

数组的声明:

  1. 索引数组的声明
<?php
    $languages = array('React', 'Node', 'PHP', 'Vue'); #索引数组的声明
    print_r($languages);
    echo '<br/>';
    var_dump($languages);
    echo '<hr/>';
    echo $languages[0], '<br/>';
    echo $languages[1], '<br/>';
    echo $languages[2], '<br/>';

效果如图:
在这里插入图片描述
2. 关联数组的声明

<?php
    $person = array('name'=>'Counterrr', 'age'=>'18', 'sex'=>'男');
    print_r($person);
    echo '<hr/>';
    echo $person['name'], '<br/>';
    echo $person['age'], '<br/>';
    echo $person['sex'], '<br/>';

效果如图:
在这里插入图片描述
3. 短数组声明

<?php
    $lan = ['REACT','PHP','NODE'];
    print_r($lan);

效果:
在这里插入图片描述
php7.1以上支持数组的赋值。如下代码:

<?php
    $num1 = 10;
    $num2 = 20;
    [$num1, $num2] = [$num2, $num1];
    echo $num1, '<br/>', $num2;

效果:
在这里插入图片描述

4.2.2 二维数组

二位数组的声明:

<?php
    $stu = [
        ['name'=>'counterrr', 'sex'=>'male', 'age'=>'18'],
        ['name'=>'lisa', 'sex'=>'female', 'age'=>'18']
    ];
    echo '<pre>';
    print_r($stu);

效果:
在这里插入图片描述

4.3 特殊类型

4.3.1 资源类型

  1. resource(资源);

4.3.2 无类型

  1. NULL(无类型);

5. 类型转换

5.1 自动类型转换

当你需要的类型和提供的类型不一样的时候会自动类型转换。
例如如下代码:

<?php
    $num = 10;
    if ($num) {
    
     #自动将数字转换为布尔型
        echo 'true';
    }
    else {
    
    
        echo 'false';
    };
    echo '<br/>';
    echo '10' + 10; #自动将字符串转换为数字

效果如图:
在这里插入图片描述

5.2 强制类型转换

语法:(数据类型)数据

<?php
    $num = '10';
    var_dump($num, (int)$num, (float)$num);

效果:
在这里插入图片描述
其他类型和布尔类型的转换:

<?php
    var_dump((bool)'abc');echo '<br/>'; #true
    var_dump((bool)'');echo '<br/>'; #false
    var_dump((bool)'0');echo '<br/>'; #false
    var_dump((bool)'0.0');echo '<br/>'; #true
    var_dump((bool)'false');echo '<br/>'; #true
    var_dump((bool)'null');echo '<br/>'; #true
    var_dump((bool)1);echo '<br/>'; #true
    var_dump((bool)0);echo '<br/>'; #false
    var_dump((bool)0.0);echo '<br/>'; #false
    var_dump((bool)array());echo '<br/>'; #false
    var_dump((bool)array(1));echo '<br/>'; #true
    var_dump((bool)array(false));echo '<br/>'; #true

效果:
在这里插入图片描述
规则:

  1. 数字转换规则:0为false,非0为true;
  2. 字符串转换规则:0和空是false,其他是true;

6. 算术运算符

在js中+会拼接字符串,不管数字与否。在php中不然,例:

<?php 
    echo '10' + '20', '<br/>'; # 30
    echo '10ab' + '20cd', '<br/>'; # 30
    echo 'ab10' + 'cd20', '<br/>'; # 0

效果:
在这里插入图片描述

一元运算符 二元运算符
++,- -, +,-,*,/,%

++,- -前置,先自增、自减再运算;
++,- -后置,先运算,再自增、自减;

7. 比较运算符、逻辑运算符

7.1 比较运算符

>, >=, <, <=, ==, !=, ===, !==

比较运算符的结果是布尔值。

7.2 逻辑运算符

&&, ||, !, &, |

其中&&,||是短路与或。&,|不是短路与或。

8. 赋值运算符

=+=-=*=/=

9. 字符串连接

字符串用点连接:

<?php 
    echo '10'.'10';

效果:
在这里插入图片描述

10. 错误抑制符。

错误抑制符 @,例如没有$name变量,去打印这个变量,不想它报错,可以如下写法:

<?php 
    echo @($name);

效果:
在这里插入图片描述

11. 三元运算符

语法:表达式 ? 为真走值1 : 为假走值2.

12. null合并运算符

php7.0以后支持
null(空)合并运算符: ??

<?php 
    echo $name??'名字不详';

效果:
在这里插入图片描述
如下:

<?php 
    $name = 'Counterrr';
    echo $name??'名字不详';

效果:
在这里插入图片描述

13. 判断语法

单分支:

if () {
    
    

}

双分支:

if () {
    
    
} 
else {
    
    
}

多分支:

if () {
    
    
} 
elseif () {
    
    
} 

多路选择:

switch () {
    
    
	case 常量:
	//代码块
	break;
	default:
	//代码块
}

练习:if,else来进行一个判断输入年份是否为闰年或平年:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
        if (!empty($_POST)) {
    
     # $_POST 是php的变量用了接收前端的post请求
            $year = $_POST['year'];
            if ($year == '') {
    
    
                echo '不能为空';
            }
            else {
    
    
                if (is_numeric($year)) {
    
     # 服务端接收了类型都是字符串 is_numberic()判断是否是数字,字符串数字
                    $year += 0; # 先将字符串数字自动转换成数字型
                    if (is_int($year)) {
    
     # is_int检测变量是否是整型
                        if ($year < 1)  # 如果if下面只有一句话可以省略
                            echo '年份必须是正整数';
                        else {
    
    
                            if ($year%4 == 0 && $year%100!=0 || $year%400 == 0) {
    
    
                                echo "${year}是闰年";
                            }
                            else {
    
    
                                echo "${year}是平年";
                            }
                        }
                    }
                    else {
    
    
                        echo '不是整数';
                    }
                }
                else {
    
    
                    echo '您输入的不是数字';
                }
            }
        }
    ?>
    <form method="POST" action="">
        请输入年份: <input type="text" name="year"> <br/>
        <input type="submit" name="button" value="判断闰年">
    </form>
</body>
</html>

效果如图:
在这里插入图片描述
小结:

  1. $_POSTphp的变量用了接收前端的post请求,本质是数组。
  2. 服务端接收了类型都是字符串 is_numberic()判断是否是数字,字符串数字。
  3. 在这里插入代码片is_int检测变量是否是整型。
  4. action为空表示将数据提交到本页面。
  5. 如果if else下面只有一句话大括号可以省略。
  6. empty可以判断变量是否为空。(也可以写成isset($_POST['year'])判断年份是否有值。)。
  7. if (isset($_POST['button'])) { }可以判断是否点击了提交按钮。

14. php更改前端颜色例子

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
        $color = 'black';
        if (isset($_POST['button'])) {
    
    
            $num = $_POST['crOption'];
            switch ($num ) {
    
    
                case '1':
                    $color = 'red';
                break;
                case 2:
                    $color = 'green';
                break;
                case 3:
                    $color = 'blue';
                break;
                default:
                    $color = 'black';
            }
        }
        echo <<<color
        <script type="text/javascript">
        window.onload = function () {
            document.getElementById('dream').style.color = "$color";
        }
        </script>
color;
    ?>
    
    <div id="dream">
        当生命的枪声已打响 <br/>
        我流血   我受伤<br/>
        当命运嘲笑我的疯狂<br/>
        用倔强  去反抗 <br/>
        信念在生长 怒火中捆绑<br/>
        我要誓死捍卫和抵抗<br/>
    </div>
    <br/>
    <form action="" method="POST">
        <select name="crOption">
            <option value="0">请选择颜色</option>
            <option value="1">红色</option>
            <option value="2">绿色</option>
            <option value="3">蓝色</option>
        </select>
        <button type="submit" name="button">确定</button>
    </form>
</body>
</html>

效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44103733/article/details/106434269