本文目录
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 小结
- 在
php
中定义常量有两种方式,define
和const
两种方式。 - 常量在运行过程中值不能重新定义,如果改变就会报错。
- 使用
constant
获取特殊字符的常量。 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 布尔型,字符串
布尔型:
不能使用echo
和print
输出布尔型,使用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;
字符串定界符注意事项:
- 开始符与名称必须紧挨着。
- 结束符必须独占一行且前后都不可有任何字符,包括空格。
- 结束符后面没有任何行或者代码会报错。
4.2 复合类型
4.2.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 资源类型
- resource(资源);
4.3.2 无类型
- 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
效果:
规则:
- 数字转换规则:0为false,非0为true;
- 字符串转换规则: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>
效果如图:
小结:
$_POST
是php
的变量用了接收前端的post
请求,本质是数组。- 服务端接收了类型都是字符串
is_numberic()
判断是否是数字,字符串数字。 在这里插入代码片
is_int检测变量是否是整型。action
为空表示将数据提交到本页面。- 如果
if else
下面只有一句话大括号可以省略。 empty
可以判断变量是否为空。(也可以写成isset($_POST['year'])
判断年份是否有值。)。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>
效果: