PHP基础补充

PHP基础补充

1.变量作用域

 1.1 局部变量
 
 function f1(){
	$a=10;
	echo $a;
}
f1();
echo $a;无法在函数外部获取函数内部的值,所以这个$a是未定义
 1.2全局变量
 
 全局变量在函数内部默认无法访问
 $a=10;
 function f1(){
	echo $a;在函数内部无法获取外部的变量,所以这个$a未定义
}
f1();
如果想要在函数内部获取到函数外部的值,可以给$a设置global全局变量
$b=10;
function f1(){
	global $b; //定义全局变量
	echo $b; //10
}
f1();
还可以使用引用传参的方式在函数内部使用全局变量
$c=10;
//值传递
function f1($arg){
	$arg++;
	echo $arg;
}
f1($c);
echo $c;
如果在函数的形参$arg前面的&去除,就是引用传递
$d=10;
function f1(&$arg){
	$arg++;
	echo $arg;
}
f1($d);
echo $d;
1.3 静态变量
在函数内部定义,作用于函数内部,使用static关键字定义
首先看下面代码的输出结果
function f1(){
	$n=1;
	$n++;
	echo $n;
}
f1();//2
f1();//2
f1();//2
同学们都想的是234;但是当函数执行结束后,就会被从内存中清楚,等到下一次再次调用函数时,又从新声明了。
想要解决这个问题,可以在变量前面加上static
function f1(){
	static $n=1;
	$n++;
	echo $n;
}
f1(); //2
f1(); //3
f1(); //4

2.超全局变量

也叫预定义变量,是PHP预先定义好的一些变量
所有超全局变量有一个特点,都是以$_开头,且变量名成为大写。
超全局变量有很多,比如:
$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组,这个数组中的项目是由Web服务器创建的。
$_GET通过 URL 参数传递给当前脚本的变量的数组。
$_POST和get方式一样,但是get传参是不是很安全,而且传送的数据比较少
$_FILES文件上传
$_COOKIE 将数据存储在客户端
$_SESSION与cookie相反,session是存储在服务端的
R E Q U E S T 默 认 情 况 下 包 含 了 _REQUEST默认情况下包含了 REQUEST_GET, P O S T 和 _POST和 POST_COOKIE的数组
$_ENV通过环境方式传递给当前脚本的变量的数组。

3.文件编程

3.1文件上传

将文件由客户端传输到服务器
上传分为两种:

  • 表单上传
  • ajax上传
3.1.1 表单上传

就是靠form和input,

  • 必须把form设置上entype属性的值设置为 enctype=“multipart/form-data”
  • 必须给input的type值设成file,然后加上name
  • post方式传输数据
3.1.2 Ajax上传

使用jQueryfileupload插件

html页面

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link href="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
  <style>
    .upload {
      width: 100px;
      font-size: 20px;
    }
  </style>
</head>

<body>
  <form action="">
    <div>
      <label for="">用户名</label>
      <input type="text" name="" id="">
    </div>
    <div>
      <label for="fileupload" class="upload btn btn-success glyphicon glyphicon-upload">上传
        <input id="fileupload" type="file" name="file" style="display: none;">
      </label>
      <!--上传进度条-->
      <div class="bar" style="width: 0%;"></div>
      <!--图片上传成功后预览-->
      <img id="uploadimg" src="" width="400px" />
    </div>
    <div>
      <input type="submit" value="提交">
    </div>
  </form>

</body>

</html>
<script src="./jQuery-File-Upload-10.4.0/js/jquery-3.4.1.min.js"></script>
<script src="./jQuery-File-Upload-10.4.0/js/vendor/jquery.ui.widget.js"></script>
<script src="./jQuery-File-Upload-10.4.0/js/jquery.iframe-transport.js"></script>
<script src="./jQuery-File-Upload-10.4.0/js/jquery.fileupload.js"></script>

<script>
  $('#fileupload').fileupload({
    dataType: 'json',
    url: "ajaxupload.php",//文件的后台接受地址
    //设置进度条
    progressall: function (e, data) {
      var progress = parseInt(data.loaded / data.total * 100);
      $('#progress .bar').css(
        'width',
        progress + '%'
      );
    },
    //上传完成之后的操作,显示在img里面
    done: function (e, data) {
      $("#uploadimg").attr('src', data.result.url);
    }
  });
</script>

PHP页面

<?php
$file=$_FILES['file'];
// 获取文件扩展名
$res=pathinfo($file['name']);
$exname=$res['extension'];
// 生成唯一的名字
$filename=time().'.'.$exname;

move_uploaded_file($file['tmp_name'],'./upload/'.$filename);
// 返回上传成功后图片名称
echo json_encode(['url'=>'upload/'.$filename]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值