这块内容,我们以2个例子,向大家展示php错误处理的用法。
例1,
<?php
//打开一个文件 未做任何处理
//$fp =fopen("aa.txt","r");
//echo "OK";
//处理:判断文件是否存在 file_exists
//by www.
/*
if(!file_exists("aa.txt")){
echo "文件不存在";
//不存在就退出
exit(); //退出后,下面面的代码就不执行了
}else{
$fp =fopen("aa.txt","r");
//...操作完之后 关闭
fclose($fp);
}
echo "OK";
*/
//PHP处理错误的3种方法
//第一种:使用简单的die语句
/* if(!file_exists("aa.txt")){
die("文件不存在。。。"); //不存在就直接退出
}else{
$fp =fopen("aa.txt","r");
//...操作完之后 关闭
fclose($fp);
}
echo "OK";
*/
//更简单的方式
file_exists("aa.txt") or die("文件不存在");
?>
例2、
<?php
//第二种:错误处理器 错误级别 处理错误方式
/*
使用error_function(error_level,error_message,
error_file,error_line,error_context)
该函数必须有能力处理至少两个参数 (error level 和 error message),
但是可以接受最多五个参数(可选的:file, line-number 以及 error context):
*/
//改写set_error_handler方法
//如果出现 E_WARNING 这个错误就调用my_error 处理方法
set_error_handler("my_error",E_WARNING);
set_error_handler("my_error2",E_USER_ERROR);
//设置中国对应的时区
date_default_timezone_set('PRC');
function my_error($errno,$errmes){
echo "<font size='5' color='red' >$errno</font>"; //输出错误报告级别
echo "错误信息是:".$errmes;
exit();
}
function my_error2($errno,$errmes){
//echo "错误信息是:".$errno,$errmes;
//exit();
//把错误信息输入到文本中保存已备查看 使用到error_log()函数
$message ="错误信息是:".$errno." ".$errmes;
error_log(date("Y-m-d G:i:s")."---".$message."\r\n",3,"myerror.txt"); // \r\n 表示换行
}
//打开一个文件 未做任何处理
//$fp =fopen("aa.txt","r");
//echo "OK";
//使用自定义错误 要添加触发器 这个trigger_error()函数来指定调用自定义的错误
$age=200;
if($age>150){
//echo "年龄过大";
//调用触发器 同时指定错误级别 这里需要查看帮助文档
trigger_error("不好了出大问题了",E_USER_ERROR);
//exit();
}
?>
感谢大家关注php入门教程,本系列的php基础教程将帮助php新手朋友,快速掌握php这门编程语言。
将继续为大家推出php相关教程,祝大家学习进步!
语法:
整型值可以使用十进制,十六进制或八进制表示,前面可以加上可选的符号(- 或者 +)。
八进制表示数字前必须加上 0(零),十六进制表示数字前必须加上 0x。
例1,
<?php //php数据类型 //by www. $int1=100; //十进制 $int2=-123; //负数 $int3=0123; //八进制数 $int4=0x1A;//十六进制数 echo PHP_INT_SIZE; //显示一个整数用几个字节来表示 echo "<br/>"; echo PHP_INT_MAX;echo "<br/>";//整数最大有多少数 (2147483647) $fmax=2147483648; var_dump(PHP_INT_MAX); //一个数超出了 integer 的范围,将会被解释为 float类型。 echo "<br/>"; var_dump($fmax); ?>
浮点数 :浮点数(双精度数或实数)
<?php $a=1.34; $b=1.8e308; $c=8e-10; var_dump($b); //浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(不能超过14位) //精度要从左边开始的第一个非0的数字计算. //如: $a=567.9999899 //输出567.9999899 $b=789.8812345678543 //输出789.88123456785 $c=0.000000008907777777 //输出0.000000008907777777 ?>
重要理解:精度要从左边开始的第一个非0的数字计算.
布尔类型是PHP中 最简单的类型。它的值可以为 TRUE 或 FALSE。
如:
<?php $foo=false; $foo1=true; echo "为假时输出值为:".$foo; //没有输出值 echo "<br />为真时输出值为:".$foo1; //输出1
细节:
当转换为 boolean 时,以下值被认为是 FALSE :
1、the 布尔值 FALSE 自身
2、the 整型值 0 (零)
3、the 浮点型值 0.0 (零) 空 字符串, 以及 字符串 "0"
4、不包括任何元素的数组
5、不包括任何成员变量的对象(仅PHP 4.0 适用)
6、特殊类型 NULL (包括尚未设定的变量)
7、从没有任何标记(tags)的XML文档生成的SimpleXML 对象
<?php
//$a=0;
//$a=0.0;
$a="0";
var_dump((bool) 0);
echo "<br />";
var_dump((bool) array());
if($a==false){
echo "空0默认转换为false,成功!";
}else{
echo "不能转换为false";
}
输出:
bool(false)
bool(false) 空0默认转换为false,成功!
感谢大家关注php入门教程,本系列的php基础教程将帮助php新手朋友,快速掌握php这门编程语言。
将继续为大家推出php相关教程,祝大家学习进步!
PHP 有三大流程控制:顺序控制,分支控制,循环控制。
1、顺序控制:就是程序按顺序从上往下一步一步的执行。
2、分支控制:程序有选择的执行。又分单分支,多分支,多重分支。
a、单分支:基本语法结构:
if(条件表达式){
语句;
//.....;
} 提示:条件表达式不管有多复杂,最终就是true或者false;
例1,
<?php
a=11;
if(a>10){
echo "a>10";
}//by www.
b、多分支:基本语法:
if(条件表达式){
语句;
//.....;
}else{
语句;
//.....;
}
c、多重分支:基本语法:
if(条件表达式){
语句;n个语句;
}else if(条件表达式){
语句;n个语句;
}elseif(条件表达式){
语句;n个语句;
}eles{
语句;n个语句;
} 提示:1、else if 可以有一个 也可以有多个。2、最后那个else可以没有
d、switch分支语句
switch(表达式){
case 常量1:
语句;n个语句;
break;
case 常量2:
语句;n个语句;
break;
case 常量3:
语句;n个语句;
break;
default:
语句;n个语句;
break;
}
注意:
1、case 语句有一到多
2、defaul 语句可以没有(根据自己代码的业务逻辑)
3、通常,在case 语句后,要带break ,表示退出switch语句
4、常量的类型 (int, float, 字符串, 布尔型)
重点:程序首先按照case顺序进行配置,如果一个都没有匹配到,则执行 default语句的内容,直到遇到break,则退出switch;
if 和 switch 分支比较:
if 对某个范围的判断,而switch是对一个点的判断, 所以我们可以这样去选择他们:
应用场景: 当分支就是几个点的时候(比如判断坦克的方向),就应当使用swtich ,如果分支是几个区域(范围)的判断,则考虑使用if。
有关php控制流程控制的相关内容,大家还可以参考下php文档中的介绍:If...else,php循环,switch。
感谢大家关注php入门教程,本系列的php基础教程将帮助php新手朋友,快速掌握php这门编程语言。
将继续为大家推出php相关教程,祝大家学习进步!