PHP基本操作和基本语句及语法
遍历二维数组
$stu=[
[1,2,3,4],
[40,50,60,70]
];
for($i=0;$i<count($stu);$i++){
for ($j=0;$j<count($stu[$i]);$j++){
echo $stu[$i][$j].' ';
}
echo '<br>';
}
作用域
变量作用域
$num = 10;
function fun(){
echo $num;
}
fun();
--------------------------------------------
$_POST['num']=10;
function fun(){
echo $_POST['num'].'<br>';
}
fun();
--------------------------------------------
function fun(){
$_GET['num']=10;
}
fun();
echo $_GET['num'];
全局变量
$num=10;
function fun(){
echo $GLOBALS['num'];
}
fun();
--------------------------------------------
$num=10;
function fun(){
global $num;
echo $num;
}
fun();
常量没有作用域
define('PI','3.14');
function fun(){
echo PI;
}
fun();
--------------------------------------------
function fun(){
define('PI','3.14');
}
fun();
echo PI;
静态变量
function fun(){
$num=10;
$num++;
echo $num.'<br>';
}
fun();
fun();
function func(){
static $nums=10;
$nums++;
echo $nums.'<br>';
}
func();
func();
常量和静态变量的区别:
1.常量和静态变量都只初始化一次
2.常量不能改变值,静态变量可以改变值
3.常量没有作用域,静态变量有作用域
匿名函数use()
$num=10;
$fun=function () use ($num){
echo $num;
};
$fun();
在函数内部访问函数外部变量
1. 使用超全局变量
2. $GLOBALS
3. global
4. use将函数外部变量引入到匿名函数内部
包含文件
包含文件的格式
1. require:可以包含多次
2. include:包含多次
3. require_once:只包含一次
4. include_once:只包含一次
5. HTML类型的包含页面中存在PHP代码,如果包含在PHP中是可以执行的
6. 包含文件相当于把包含文件中的代码拷贝到主文件中执行,魔术常量除外,魔术常量获取的是所在文件的信息
7. 包含编译时不执行,运行时加载到内存,独立编译包含文件
require遇到错误抛出error类别的错误,并且停止执行
include遇到错误抛出warning类型的错误,并继续执行
./和不写./的区别
require './11.html';
require '11.html';
错误处理
错误的级别
1. notice:提示
2. warning:警告
3. error:致命错误
错误的提示方法
方法一:显示在浏览器上
方法二:记录在日志中
与错误有关的配置
1. error_reporting=E_ALL:报告所有的错误
2. display_errors=on:将错误显示在浏览器上
3. log_errors=on:将错误记录在日志中
4. error_log=‘地址’:错误日志保存的地址
$debug=true;
ini_set('error_reporting',E_ALL);
if($debug){
ini_set('display_errors','on');
ini_set('log_errors','off');
}else{
ini_set('display_errors','on');
ini_set('log_errors','off');
ini_set('error_log','./err.log');
}
function fun(){
echo $num;
}
fun();
在项目开发过程中有两个模式,开发模式,运行模式 开发模式:错误显示在浏览器上,不要记录在日志中 运行模式:错误不显示在浏览器上,记录在日志中
自定义错误处理
通过trigger_error产生一个用户级别的error/warning/notice信息
$age=100;
if ($age>80):
trigger_error('年龄不能超过80岁',E_USER_ERROR);
endif;
定义错误处理函数
function error(){
echo '这是一个错误处理函数';
}
set_error_handler('error');
echo $num;
--------------------------------------------
function error($errno,$errstr,$errfile,$errline){
switch ($errno){
case E_NOTICE:
case E_USER_NOTICE:
echo '记录在日志中'.'<br>';
break;
case E_WARNING:
case E_USER_WARNING:
echo '给管理员发邮件'.'<br>';
break;
case E_ERROR:
case E_USER_ERROR:
echo '给管理员打电话'.'<br>';
break;
}
echo "错误信息:{$errstr}<br>";
echo "错误文件:{$errfile}<br>";
echo "错误行号:{$errline}<br>";
}
set_error_handler('error');
echo $num;
文件操作
创建文件夹
mkdir('./aa');
mkdir('./aa/bb');
mkdir('./aa/bb/cc',0777,true);
删除文件夹
rmdir('./aa/bb/cc/dd');
重命名文件夹
rename('./aa',';./aaa');
是否是文件夹
is_dir('./aa')?'是文件夹':'不是文件夹';
打开文件夹、读取文件夹、关闭文件夹
$floder=opendir('./');
var_dump($floder);
while ($f=readdir($floder)){
if ($f=='.'||$f=='..'):
continue;
endif;
echo iconv('gbk','utf-8',$f),'<br>';
}
closedir($floder);
总结:
1. opendir():返回资源类型
2. 每个文件夹都有.和..
3. iconv():用来做字符编码转换
总结:我认为这里面最重要的是错误处理,因为一旦错误处理不好,会造成很严重的后果,比如:数据库的错误信息,这些信息一旦显示在浏览器上,将有可能实现自己的所有数据库信息被盗取。还有学知识真的应该举一反三,比如知道了判断一个文件夹是否是文件夹,那同样也应该想一下判断是否是一个文件是什么函数。
|