php基础
变量
变量是用于存储值的,一般情况下一个变量只能装一个值,可以将变量想象是一个瓶子,值就是瓶子里面的水
- 定义变量的方式:php中没有定义变量的关键字,但是在定义变量的时候变量名必须是$(美元符)开头,如:
<?php
$name = "alex"; // 定义一个变量
echo $name //输出
?>
-
php变量命名规则:
- 变量名必须以字母或者下划线"_"开头
- 变量名只能➡由字母,数字,以及"_"组成,也可以包含汉字,但是不建议使用汉字作为变量名
- 变量名不允许包含空格,变量名包含多个单词组成,可以使用下划线法或者骆驼式命名法
- 在php中变量名是明确区分大小写的
-
变量的数据类型
在变量中,由于变量占用的空间单元不一样,也分成几种数据类型,可以使用"memory_get_usage"函数获取当前消耗的内存
<?php
// 获取当前消耗的内存
$c1 = memory_get_usage();
$name = 'alex';
$c2 = memory_get_usage() - $c1;
echo '变量name所占用的内存空间:'.$c2
?>
php是一个弱类型语言,在定义时不需要声明变量的类型,php会自动吧变量转换成自动的数据类型
<?php
$string = "就是就是";
var_dump($string); //使用var_dump查看变量的数据类型
echo "<br />";
$string = 9494; //自动将$string变量转换成int类型
var_dump($string);
echo "<br />";
?>
php标量类型:
字符串
- php中的字符串是用双引号括起来的一个词或者一个句子,比如"hello world",可以使用php语言输出echo 将字符串输出
<?php
// 定义一个$name变量
$name = 'alex';
// 输出$name变量
echo $name
?>
- php连接字符串的方式
在php中使用 . 连接两个字符串,与python或者javascript中使用+连接字符串不一样
<?php
// 定义变量
$name = 'alex';
$age = '20岁';
// 使用 . 连接字符串输出
echo '名字:'.$name.'年龄:'.$age
// output: 名字:alex年龄:20岁
?>
- php语句结束符号:每一条php代码航结尾处都会有一个分号;结束,并且分号;一定在半角状态下输入,否则会报错
- php的注释是双斜杠://
- 当引号遇上美元符号:
<?php
// 定义变量
$name = 'alex';
// 当引号遇上美元符号
echo '名字:$name'; //输出的是$name
echo "名字:$name" //字符串格式化输出
?>
// output:
名字:$name
名字:alex
- 多行字符串
在赋值符号后,输入界定福"<<<",接着就是标识符(代码中的EOF)
//多行字符串
$content = <<<EOF
我有一只小毛驴,我从来也不骑。
有一天我心血来潮,骑着去赶集。
我手里拿着小皮鞭,我心里正得意。
不知怎么哗啦啦啦啦,我摔了一身泥.
EOF;
echo $content;
?>
bool类型
布尔类型(boolean):只有两个值,一个是TRUE另一个是FALSE,bool不区分大小写,主要是用在条件结构
<?php
$man = '男';
$flag = $man == '男';
echo $flag;
var_dump($flag)
?>
整形
整形(integet):类似于常见的证书,可以用十进制,八进制,十六进制指定,十进制就是日常使用的水,八进制数字前必须加上"0",十六进制数字前必须加"0x"
<?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第一种特殊类型--资源
资源(resource):资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。任何资源,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽
例如:
<?php
$f = fopen('./content.txt','r'); //打开文件,第一个参数是文件名,第二个参数是打开类型
$conn = mysqli_connect('host','root','密码','数据库名');//数据库连接
$img = imagecreate(100,100) //画布
?>
文件的简单操作:
<?php
$f = fopen('./content.txt','r'); //打开文件,第一个参数是文件名,第二个参数是打开类型
if ($f){ //判断f文件资源是否存在
//接着采用while循环(后面语言结构语句中的循环结构会详细介绍)一行行地读取文件,然后输出每行的文字
while (!feof($f)){ //判断是否到最后一行
$line = fgets($f); // 输出一行文本
echo $line;
}
}
?>
空类型
NULL(空):NULL是空类型,对大小写不敏感,null类型只有一个取值,表示一个变量没有值,当被赋值为null或者尚未被赋值,或者被unset(),这三种情况下被认为为null
<?php
error_reporting(0); //禁止显示PHP警告提示
$var;
var_dump($var);
$var1 = null;
var_dump($var1);
$var2 = NULL;
var_dump( $var2);
$var3 = "节日快乐!";
unset($var3);
var_dump($var3);
// 输出的都是null
?>
自定义常量
常量是不变的量,在常量被定义后,在脚本的任意位置都不可以被改变,PHP中的常量分为自定义常量和系统常量
PHP自定义常量是根据我们开发的需要而定义的常量,可以使用PHP中的函数define()定义
define()函数的语法:
bool define(string $constant_name, mixed $value[, $case_sensitive = true])
<!--第一个参数“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致,但是要注意哦,它可不带美元符号哦。第二个参数“value”为必选参数,它是常量的值。第三个参数“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false。-->
string表示参数类型为字符串类型,mixed表示参数类型可以接受为多种不同的类型
例:
<?php
$p = "PII";
define('PI',3.14);
define($p,3.14);
echo PI;
echo "<br />";
echo PII;
?>
在使用常量的时候可以直接调用define()函数的第一个参数中的字符串调用,但是不可以进行更改.
PHP常量取值的第二种方式:constant(),使用这种方式更加的灵活
例1:
<?php
$name = 'alex';
define("NAME",$name);
echo NAME;
define("AGE",10);
echo AGE; // 第一种取值方式
echo constant("NAME") //第二种取值方式
?>
例2:
<?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;
?>
使用defined(strinf constants_name)函数可以帮助我们判断一个常量是否已经被定义,这个函数如果只有一个参数constant_name指的是要获取常量的名称,若存在则返回布尔类型true,否则返回false
<?php
define("PI1",3.14);
$p = "PI1";
$is1 = defined($p);
$is2 = defined("PI2");
var_dump($is1);
var_dump($is2);
?>
系统常量
系统常量是php已经定义好的常量,可以直接拿来使用过,常用的系统常量:
- FILE :php程序文件名,可以帮助获取当前文件在服务器的物理位置
- LINE:PHP程序文件行数,可以使用该常量获取当前代码在第几行
- PHP_VERSION:当前解析起的版本好
- PHP_OS:执行当前PHP版本的操作系统名称
<?php
echo __FILE__;
echo PHP_OS;
echo __LINE__;
echo PHP_VERSION;
?>
运算符
PHP运算符一般分为算数运算符,赋值运算符,比较运算符,三元运算符,逻辑运算符,字符串连接运算符,错误控制运算符
算数运算符
算数运算符只要是用于进行算数运算的,算术运算符与其他语言的运算符基本一样,不做笔记了
- 加法 ------ (+)
- 减法 ------ (-)
- 乘法 ------ (*)
- 除法 ------ (/)
- 取模 ------ (%)
<?php
$english = 110; //英语成绩
$math= 118; //数学成绩
$biological = 80; //生物成绩
$physical = 90; //物理成绩
$sum = $english + $math + $biological + $physical;
$avg = $sum / 4;
$x = $math - $english;
$x2 = $english * $english;
echo "总分:".$sum."<br />";
echo "平均分:".$avg."<br />";
echo "数学比英语高的分数:".$x."<br />";
echo "英语成绩的平方:".$x2."<br />";
赋值运算
- "=" :吧右边表达式的值赋值给左边的运算符,它会将右边表达式的值复制一份,交给左边的运算符
- "&" :引用赋值,意味着两个变量都指向了同一个数据,将两个变量共享一块内存,如果这个内存存储的数据变了,那么两个变量的值都会发生变化
例:
<?php
$a = "alex";
$b = $a."大傻逼";
$c = &$a;
$a = "alex不是大傻逼";
echo $a; // alex不是大傻逼
echo $b; // alex大傻逼
echo $c;// alex不是大傻逼
?>
比较运算
比较运算符返回都是bool类型
比较运算符 | 名称 |
---|---|
== | 等于 |
=== | 全等 |
!= | 不等 |
<> | 不等 |
!== | 非全等 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
例:
<?php
$a = 1;
$b = "1";
var_dump($a == $b);
echo "<br />";
var_dump($a === $b);
echo "<br />";
var_dump($a != $b);
echo "<br />";
var_dump($a <> $b);
echo "<br />";
var_dump($a !== $b);
echo "<br />";
var_dump($a < $b);
echo "<br />";
$c = 5;
var_dump($a < $c);
echo "<br />";
var_dump($a > $c);
echo "<br />";
var_dump($a <= $c);
echo "<br />";
var_dump($a >= $c);
echo "<br />";
var_dump($a >= $b);
echo "<br />";
?>
三元运算符
(?:)三元运算符也是一个比较运算符
$num = 60;
$b = $num <= 60 ? "及格" : "不及格"; // 如果判断成功取?后面的否则取:后面的
echo $b
逻辑运算符
逻辑运算符朱勇是进行逻辑运算的,例如:逻辑与,逻辑或,逻辑异或,逻辑非等
例子 | 名称 |
---|---|
$a and $b | And(逻辑与) |
$a or $b | Or(逻辑或) |
$a xor $b | Xor(逻辑异或) |
!$a | Not(逻辑非) |
$a && $b | And(逻辑与) |
$a || $b | Or(逻辑或) |
<?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 ?"通过":"不通过";
?>
字符串连接符
PHP中有两个方式可以将字符串连接起来,第一种是(.),第二种是(.=)
<?php
$a = "alex";
$tip = $a.",欢迎您在慕课网学习PHP!";
$b = "东边日出西边雨";
$b .= ",道是无晴却有晴"; //$b = $b.",道是无晴却有晴";
$b .= $a; // $b = $b.$a
$c = "东边日出西边雨";
$c = $c.",道是无晴却有晴";
echo $tip."<br />";
echo $b."<br />";
echo $c."<br />";
?>
错误控制运算符
PHP中提供了一个错误控制运算符"@",对于一些可能会在运行过程中出错的表达式,可以将@防止在一个PHP表达式之前,该表达式可能产生的任何错误信息都会被忽略
<?php
$conn = @mysqli_connect("localhost","username","password");
echo "出错了,错误原因是:".$php_errormsg;
?>
逻辑控制
if...else...
语法:
<?php
if(条件){
// .....
}else{
// .....
}
?>
例:
<?php
efault_timezone_set('Asia/ShangHai'); //设置时区
$today = date('m-d',time()); //获取当前日期
$brithday = '04-20';
$money = 238;
$discount = 0.8;
if ($today == $brithday){
$sum = $money * $discount;
echo "生日快乐,共消费:".$sum;
}else{
echo "共消费:".$money;
}
?>
if ... else if ...
语法:
if (条件1){
// ...
}else if(条件2){
// ...
}else{
// ...
}
例:
<?php
$totalMoney = 0;//总工资
$basicMoney = 2000;//基本工资
$sex = "男";
if($sex == "男"){
$totalMoney = $basicMoney + 0;// 男的没奖金
}else if($sex == "女")
$totalMoney = $basicMoney + 300;// 女的有奖金300元
}
echo $totalMoney;
?>
条件结构之switch ..case ...
语法:
<php?
switch(条件)
{
case 条件值1:
break
case 条件值2:
break
default:
//默认任务
}
?>
例:模拟抽奖
<?php
$num = rand(1,50);
switch ($num){
case 1:
echo "一等奖";
break;
case 2:
echo "二等奖";
break;
default:
echo "你抽中的是$num - "."很遗憾你没有中奖!";
}
?>
switch中break的作用是阻止代码进入下一个case中继续执行。
while循环语句
语法:
<php?
while(条件){
// ...
}
?>
例:100以内能被2整除的数相加
<?php
$num = 1;
$sum = 0;
while ($num < 100){
if ($num%2 === 0){
$sum += $num;
}
$num +=1;
}
print $sum;
echo "循环结束";
do while循环语句
语法:
<php?
do{
//执行任务
}while(条件)
?>
首先执行任务,执行任务完毕,判断某个条件是否符合(条件返回值是否为TRUE),若符合则再次执行任务,执行完毕任务,继续判定条件。
例:
<?php
$i = 0;
do{
$i ++;
echo "这是第($i)圈";
}while($i < 5);
while与do...whild语句的区别:while在判断条件的时候,如果条件为false,一次也不会执行,do...while会执行一个do结构体中的语句,再进行判断是否需要继续执行下去
<?php
//A例子
$num = 2;
$sum = 10;
while($num<3){
$sum = $sum + 10;
}
echo "A例子的结果:".$sum."<br />";
//B例子
$num = 2;
$sum = 10;
do{
$sum = $sum + 10;
}while($num<3);
echo "B例子的结果:".$sum."<br />";
?>
例2:
<?php
/**
* Created by PhpStorm.
* User: wualin
* Date: 2019-04-20
* Time: 21:09
*/
//例如开发一个掷骰子大富豪游戏,如果掷到6可以再掷一次,如果不是留则跳出可以使用do_while来实现
// 使用while实现
$sum = 0;
$num = rand(1,6);
$sum = $sum+$num;
while ($num == 6){
$num = rand(1,6);
$sum = $sum+$num;
}
echo "while例子执行完毕,前进:$sum";
//使用do...while实现
$sum = 0;
do {
$num = rand(5, 6);
$sum += $num;
}while($num == 6);
echo "do...while例子执行完毕,前进:$sum";
for循环
语法:
<?php
for(初始化;循环条件;递增项){
// ...
}
?>
例:求100以内能被2整除的数
<?php
$sum = 0;
for ($num=0;$num<100;$num++){
if ($num %2 === 0){
$sum += $num;
}
}
echo $sum;
foreach循环
在php中的foreach循环语句,常用于遍历数组
语法:
<?php
foreach(数组 as 值){
// ...
}
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遍历二维数组
<?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 />";
}
?>