1.区分大小写
php变量区分大小写,
php常量也区分大小写,可以设置为不区分,不建议,
而系统关键字不区分。
2.变量定义
1.php变量不需要声明,创建变量的同时便进行赋值,以$开头
$v = 1; //创建变量v并且赋值为1
3.变量传值(数值传值、引用传值)
变量的引用传值,和数值传值不一样,是将旧变量和值之间的引用关系,复制一份,赋予新变量
- 数值传值
$v1 = 10; $v2 =$v1;
- 引用传值
$v1 = 10; $v1 = &$v1;
4.作用域
有4种变量作用域,local、global、static、parameter,所有在函数外部定义的变量为global,所有在函数内部定义的变量为local(仅能在函数内部访问)。
-
函数内部访问global变量,有2种方法
<?php $v1 = 5; $x = 10; function test(){ #方法1:使用global关键字,引用全局变量 global $v1,$x; echo $v1; echo $x; #方法2:所有全局变量都存在于数组$GLOBALS中,用变量名作键可以引用 echo $GLOBALS['v1']; } test(); ?>
-
static作用域,当一个函数执行完毕,它的所有变量都会变删除,如何你想某局部变量不变删除,那么在创建变量时加上static关键字
<?php function test(){ static $x = 100; echo $x; $x ++; } test(); //100 test(); //101 test(); //102 ?>
- 参数作用域parameter,暂且按下不表
5.可变变量
所谓可变变量,其实就是:变量名字可以动态变化,以获取不同的值
$a = "xyz";
$xyz = 100;
echo $$a //100
//从后往前进行运算,因为 $a="xyz",则$$a=$xyz=100;
其用处就是可以:灵活获取名字有规律可循的变量
$v1 = 200;
$v2 = 300;
$v3 = 100;
$v4 = 150;
$v5 = 250;
$sum = 0;
//求以上变量的和
//因为以上变量的名字是有规律的,所以可以这样来求
for($i = 1; $i < 6; $i ++){
$v = "v" . $i;
$sum += $$v;
}
echo $sum; //1000
6.预定义变量,系统自己定义好的,都是数组。具有超全局作用域
1.$_GET
和$_POST类似,收集用户以get方式提交的数据,可以是form表单提交的数据,也可以是:
- a链接,<a herf='目标文件路径.php?d1=v1&d2=v2' ></a>
可以获取到d1和d2 - js语法跳转,其实就和a标签是一样的
<script> location.href='目标文件路径.php?d1=v1&d2=v2' </script>
- 同样是js语法跳转,不同的写法而已
<script> location.assign('目标文件路径.php?d1=v1&d2=v2') </script>
- php语法跳转
<?php header("location:目标文件路径.php?d1=v1&d2=v2") ?>
这其实是在学页面跳转方法吧???
(注:用get方法提交的表单数据,其名称和值会显示在地址栏中,所以:1.密码以及敏感信息,切忌用get方法提交; 2.然而正因为变量可以显示在URL中,所以可以收藏在收藏夹中,在某些情况下,很有用吧; 3.get方法不适合大型变量值,提交的值不能超过2000字符)
2.$_POST
代表用户通过表单以post方式(method="post")提交的所有数据。form表单的action属性写数据要提交到的地址,action=""则提交到本页面。
-
提交到 01.php进行处理
html页面
01.php<form action="01.php" method="post"> <input type="text" name="d1"> <input type="text" name="d2"> <input type="submit" value="submit"> </form>
if(!empty($_POST[0])){ $v1 = $_POST['d1']; $v2 = $_POST['d2']; print($v1); print($v2); print_r($_POST); }else{ print "请填写数据!"; }
-
提交到本页面(简单计算器案例)
<?php if(!empty($_POST)){ $f = $_POST['simple']; $d1 = $_POST['d1']; $d2 = $_POST['d2']; if($f == '+'){ $result = $d1 + $d2; }else if($f == '-'){ $result = $d1 - $d2; }else if($f == '*'){ $result = $d1 * $d2; }else if($f == '/'){ $result = $d1 / $d2; } }else{ $result = ''; $f = ''; $d1 = ''; $d2 = ''; } ?> <form action="" method="post"> <input type="text" name="d1" value="<?php echo $d1 ?>"> <select name="simple"> <option value="+">+</option> <option value="-" <?php if($f == '-'){echo 'selected = selected';} ?> >-</option> <option value="*" <?php if($f == '*'){echo 'selected = selected';} ?>>*</option> <option value="/" <?php if($f == '/'){echo 'selected = selected';} ?>>/</option> </select> <input type="text" name="d2" value="<?php echo $d2 ?>"> <input type="submit" value="submit"> <input type="text" value="<?php echo $result ?>"> </form>
3.$_REQUEST
变量$_GET和变量$_POST的合集,同时存储了这两种数据。基本没什么用?
4.$_SERVER
含义:
1.在一次浏览网页(每和服务器发生联系就是一次)的过程中,浏览器端的一些信息或服务器端的一些信息。
2.这些信息,随着不同的页面、不同的服务器、不同的时间,都有所不同。
3.我们只是在程序中拿到这些信息并拿来用,例如:取得用户访问的IP
4.这些信息大约有30个左右,先学几个吧
- $_SERVER['REMOTE_IP']:获取访问者的IP
- $_SERVER['SERVER_IP']:获取服务器的IP
- $_SERVER['SERVER_NAME']:获取服务器名字
- $_SERVER['SERVER_ROOT']:获取站点真实物理路径
- $_SERVER['PHP_SELF']:获取当前网页地址,不含域名部分
- $_SERVER['SCRIPT_FILENAME']:获取当前网页的绝对路径
- $_SERVER['QUERY_STRING']:获取当前网页地址中的所有get数据
嘛,记不住的话,我们可以把$_SERVER这个数组整一个输出来
<?php
echo "<table border='1'>";
foreach($_SERVER as $k => $v){
echo '<tr>';
echo '<td>' . $k . '</td>';
echo '<td>' . $v . '</td>';
echo '</tr>';
}
echo "</table>";
?>
可以完整地看到$_SERVER地内容了,以表格形式列出来,很清晰。
5.$GLOBALS
丫的居然不带下划线?这个命名有毒!php设计地出来谈谈人生???
$GLOBALS这个变量作用详见全局作用域。
6.其余的还有$_SESION,$_COOKIE,$_FILES
7.常量
1.定义
define('常量名', '常量值')
const 常量名 = 常量值
常量不可被销毁,只能储存标量类型,字符串、整型、浮点型、布尔型
2.取值(使用)
直接用,常量默认是全局的
constant('常量名') ,常量名是一个字符串
3.预定义常量,嘛好几百个,都不知道都是可以的?
M_PI //圆周率
PHP_OS //php运行所在的系统
PHP_VERSION //php版本
PHP_INT_MAX //php最大整数
4.魔术常量
就是值会变的常量,记几个
_FILE_ :当前网页文件
_DIR_ : 当前网页所在目录
_LINE_\ :当前所在行号