您的位置:首页 > 编程语言 > PHP开发

php基础知识(二)运算符与条件分支

2019-06-02 23:02 113 查看

常量

定义常量

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;

小结:

  1. 定义常量有俩中方法 :define()和const;
  2. 常量在整个运行过程中保持不变,常量不能重新定义
  3. 使用constant获取特殊字符做的常量名的值
  4. 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>

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: