php基础知识(二)运算符与条件分支
常量
定义常量
1、用define()函数定义常量
define(常量名,值,【是否区分大小写】)true表示不区分大小写,默认false
常量名前没有$符
常量名推荐使用大写
例题:
<?php define('Name','tom')//定义常量 define('Name','tom',true)//不区分大小写 echo Name; ?>
2、定义常量可以用特殊字符,调用时必须用constant关键字调用
defin('%-%','tom'); echo constant('%-%');
3、判断常量是否定义用defined()
if(!defined('Name')){ define('Name','tom'); }
4、换可以使用const关键字定义常量
const Name='tom'; echo Name;
小结:
- 定义常量有俩中方法 :define()和const;
- 常量在整个运行过程中保持不变,常量不能重新定义
- 使用constant获取特殊字符做的常量名的值
- defined()判断常量是否定义
预定义常量
php预先定义好的常量
echo PHP_VERSION; //PHP版本号 echo PHP_OS; //PHP操作系统 echo PHP_INT_MAX; //PHP中整型的最大值
魔术常量
魔术常量他们的值随着他们在代码中的位置改变而改变
echo __LINE__; //获取当前行号 echo __FILE__; //文件的完整路径和文件名 echo __DIR__; //文件所在的目录
数据类型
数据类型有俩种,强类型和弱类型
php是弱类型
基本类型(标量类型)
1、整型
<?php $num1=10; //十进制 $num2=010; //八进制(数字前面加0) $num3=0x10; //十六进制(数字前面加0x) echo $num1,'<br>'; //10 echo $num2,'<br>'; //8 echo $num3; //16
2、浮点型
浮点数在内存中保存的是近似值
浮点数不能参与比较
var_dump(0.9==(1-0.1)); //bool(true) echo '<br>'; var_dump(0.1==(1-0.9)); //bool(false)
如果浮点数要比较,必须确定比较的位数
var_dump(0.9==(1-0.1)); //bool(true) echo '<br>'; var_dump(0.1==(1-0.9)); //bool(false)echo '<br>'; var_dump(bccomp(0.1,1-0.9,5)); //比较小数点后面5位 int(0) 0表示相等
如果一个整数超出了整型的范围,会自动的转成浮点型
3、布尔型
不能使用echo和print输出布尔型,要使用var_dump()输出
$flg=false; var_dump($flg);
4、字符串型
在php中单引号字符串和双引号字符串是有区别的
单引号字符串是真正字符串
双引号字符串要解析字符串中的变量
$name='tom'; echo '我的名字叫$name','<br>'; //我的名字叫$name echo "我的名字叫$name",'<br>'; //我的名字叫tom
例题:{ }取变量值
<?php $name='tom'; echo '$name是我的名字','<br>'; //$name是我的名字 echo "{$name}是我的名字",'<br>'; //{}表示获取变量的值(tom是我的名字) echo "${name}是我的名字",'<br>'; //$和{只要挨着一起就可以(tom是我的名字) ?>
输出特殊字符串
echo '毛主席说:\'上课不要睡觉\'','<br>'; //转义字符 毛主席说:'上课不要睡觉' echo '文件保存在c:\\'; //文件保存在c:\
字符串定界符
1:有<<<开头,后面跟的的标识符
2:字符串定界符的结束符必须顶格,前面不能有任何的空白符
3:字符串定界符分为两种,heredoc(双引号),nowdoc(单引号)
5、复合类型
一、数组:在PHP中数组有两种形式,索引数组和关联数组
索引数组:用整数做下标,默认从0开始,后面依次加一
关联数组:用字符串做下标,通过=>符号将下标和值关联起来
例题:数组的声明
<?php //1、索引数组的声明 $stu=array('tom','berry','ketty'); //索引数组 print_r($stu); //输出数组 Array ( [0] => tom [1] => berry [2] => ketty ) echo '<hr>'; echo $stu[0],'<br>'; //tom echo $stu[1],'<br>'; //berry echo $stu[2],'<hr>'; //ketty ------------------------------------------ //2、关联数组 $emp=array('name'=>'李白','sex'=>'男','age'=>22); print_r($emp); //Array ( [name] => 李白 [sex] => 男 [age] => 22 ) echo '<hr>'; echo $emp['name'],'<br>'; //李白 echo $emp['sex'],'<br>'; //男 echo $emp['age']; //22
数组的下标只能是正整数和字符串
$stu[true]='tom'; //转成1 $stu[false]='berry'; //转成0 $stu[12.9]='aa'; //转成12(取整数部分) $stu[-10]='bb'; //负数可以做下标 $stu[-12.3]='cc'; //取负整数 $stu['10']='dd'; //字符串数字转成数字 $stu['']='ee'; //空字符串也可以做下标 $stu[null]='ff'; //转成空字符串做下标 print_r($stu);
短数组语法,可以直接通过中括号声明数组
$stu=['tom','berry','ketty']; print_r($stu); //Array ( [0] => tom [1] => berry [2] => ketty )
小结:数组在内存中是一段连续 的空间
二、对象
6、特殊类型
资源
null
类型转换
1、自动类型转换,当提供的类型和需要的类型不一致的时候会自动进行类型转化
$num=10; if($num){ //自动将数字转成布尔型 echo 'aa'; }else{ echo 'bb'; } --------------------------------- echo '20'-10; //自动的将字符串转成数字
2、强制类型转化
<?php $num1='12'; var_dump($num1,(int)$num1,(float)$num1); //string(2) "12" int(12) float(12)
其他类型好人布尔之间的转化
规则:0、空为假,非0非空为真
<?php var_dump((bool)'abc'); echo '<br>'; //bool(true) var_dump((bool)''); echo '<br>'; //bool(false) var_dump((bool)'0'); echo '<br>'; //bool(false) var_dump((bool)'0.0'); echo '<br>'; //bool(true) var_dump((bool)'00'); echo '<br>'; //bool(true) var_dump((bool)'false'); echo '<br>'; //bool(true) var_dump((bool)'null'); echo '<br>'; //bool(true) var_dump((bool)1); echo '<br>'; //bool(true) var_dump((bool)0); echo '<br>'; //bool(false) var_dump((bool)-10); echo '<br>'; //bool(true) var_dump((bool)0.0); echo '<br>'; //bool(false) var_dump((bool)array()); echo '& 4000 lt;br>'; //bool(false) var_dump((bool)array(1)); echo '<br>'; //bool(true) var_dump((bool)array(false)); echo '<br>';//bool(true) var_dump((bool)null); echo '<br>'; //bool(false)
运算符
算术运算符
++ - * /在php中算术运算符只能做数学运算
++前置先自增在运算
++后置 先运算后自增
<?php $num=5; echo (++$num)+(++$num)+(++$num); //21 ------------------------- <?php $num=5; echo ($num++)+($num++)+($num++); //18
关系运算符(比较运算符)
=
<
<=
==
!=
===
!==
比较运算符的运算结果是布尔值
逻辑运算符
& 与:运算符两边的表达式都要计算
| 或:运算符两边的表达式都要计算
&& 短路与:如果前面的条件不满足,后面的条件就不用计算了
|| 短路或
! 非
赋值运算符
= //赋值
+= //a+=b a=a+b
-=
*=
/=
%=
字符串连接符
echo 'aa'.'bb'; //字符串链接 aabb
错误抑制符
<?php echo @($aa+$bb); //错误抑制
错误抑制符只对表达式有效
null合并运算符
<?php echo $name??'姓名不详'; //姓名不详
俩个用来判断的函数
isset():判断变量是否被设置,并且设置的不是null
empty():检查一个变量是否为空,能转成false全部是空,[’’,0,0.0,array(),null]
echo isset($name)?$name:'姓名不详'; //姓名不详 echo '<hr>'; $stu=array(); echo empty($stu)?'空':'非空'; //空
判断
语法
单分支
if(条件){}
双分支
if(条件){
//代码块1
}else{
//代码块2
}
多分枝
if(条件){
}elseif(条件){ //注意:elseif之间没有空格
}else{
}
多路选择
switch(表达式){
case 常量:
//代码块
break;
case 常量:
//代码块
break;
default:
//代码块
}
例题:更改颜色
目标:将文字的颜色改成选择的颜色
<body> <?php if(isset($_POST['button'])) { switch($_POST['color']){ case '1': $color='#FF0000'; //红色 break; case '2': $color='#009900'; // 绿色 break; case '3': $color='#0000FF'; //蓝色 break; default: $color='#000000'; //黑色 } echo <<<str <script type="text/javascript"> window.onload=function(){ document.getElementById('shi').style.color='$color'; } </script> str; } ?> <div id="shi"> 锄禾日当午, <br /> 汗滴禾下土。 <br /> 谁知盘中餐, <br /> 粒粒皆辛苦。 <br /> </div> <form method="post" action=""> <select name="color"> <option value="0">请选择颜色</option> <option value="1">红色</option> <option value="2">绿色</option> <option value="3">蓝色</option> </select> <input type="submit" name="button" value="更改颜色"> </form> </body>
运行结果:
- php基础知识之运算符和流程控制
- php基本运算符,数组运算符,错误控制运算符及基础知识
- php基础知识4.表达式与运算符
- php基础详解之变量,常量,数据类型,类型转换,运算符,分支与循环
- 前端js基础理论知识(二运算符,条件语句)
- PHP基础知识运算符
- PHP学习笔记(四)--基础知识之常用运算符
- JAVA 基础语法(三)——三目(条件)运算符以及分支语句
- java基础知识-----运算符表达式和分支结构
- Ruby基础知识-赋值和条件运算符
- PHP面向对象基础知识
- PHP易混淆知识整理笔记_php基础
- PHP基础知识 - include和require的区别
- C语言基础知识---分支控制结构
- PHP编程“数组”的基础知识
- 学ios需要了解的C语言基础知识-3-分支结构循环结构
- 【PHP基础知识】——Cookie知识详解与使用
- PHP内核介绍及扩展开发指南—基础知识
- PHP基础知识
- C#基础知识之分支结构