$_POST变量(数组)
类似$_GET变量(数组),$_POST代表页面通过post方式提交过来的数据所形成的数组。
post提交数据,通常只有一种形式:
<form action=”abc.php” method=”post” >
项目1: <input type=”text” name=”uName” />
项目2: <input type=”password” name=”uPswd” />
<input type=”submit” value=”提交” />
</form>
其作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php)
接收post数据的形式为:
(在abc.php网页中)
<?php
$v1 = $_POST[‘uName’]; //单引号也可以用双引号,本质是一个字符串,其实是数组的键名(下标)
$v2 = $_POST[‘uPswd’]; //该键名必须跟提交的时候的名字完全一致(区分大小写)
也可以显示所有post数据:
var_dump($_POST)
?>
通常,网页中的form表单,一般都用post方式,get方式主要体现在其他3种形式。
小案例:
设计一个页面,可以对2个数据进行基本算术运算(+-*/),使用post方式
$db = new MySQLi('localhost','root','root','z_0222');
!mysqli_connect_error() or die('数据库连接失败');
$db->query('set names utf8');
$sql = "";
$res = $db->query($sql); //怎删改 返回true false
$arr = $res->fetch_all(); //查询返回结果集 通过这一行转成数组
常量(配置) pwd = 123
含义:用于存储一个不会变化也不希望变化的数据的标示符。
常量命名规则,同变量,但习惯说,常常将常量的名称使用“全大写”形式。
定义形式
使用形式:define(“常量名”, 常量值);
推荐常用名使用全大写形式
使用形式: const 常量名 = 常量值;
但const语法只能在“最顶层”的代码域中使用(不能在大括号中)
也即,const语法不能在函数中或条件语句中或其他表示一个“范围”的语句中使用
使用常量:
两种形式:
直接使用名字
或使用constant()函数:constant(“常量名”)
常量变量的区别:
定义形式不同:
使用形式不同:常量无需$符号
可变程度不同:常量的值不可以改变,常量也不可以销毁
作用范围不同:常量具有超全局作用域 (函数内外都可以直接使用)
可用类型不同:常量只能存储标量类型:int,float,string,bool
判断常量是否存在:defined()
判断的结果为布尔值。
常用形式:if ( defined (某常量名) == false ){ .....这里可以去定义该常量;}
实际上,可以这样:
$result = defined (某常量名); //结果是true或false
使用一个未定义的常量(特殊情况):
使用一个未定义的常量会报一个错误(notice错误)——跟使用一个未定义的变量一样——当然不推荐。
但是:
php,此时会得到一个意想不到的结果:似乎该常量存在,并该常量的值就是该名字。
预定义常量:
php语言中,预定了大量的常量,可以直接使用。
其中有些常量,是需要某些模块打开之后才有(比如mysql模块)
比如M_PI(圆周率), PHP_OS(操作系统), PHP_VERSION(php版本号),PHP_INT_MAX(php中的最大的整数值)
参考手册〉附录〉保留字列表〉预定义常量
魔术常量
魔术常量其实是一种值会随着一定的条件(环境)而变化的常量,形式和使用上是常量,但实际上,其值会改变。
比如:__DIR__(当前网页文件的所在目录),__FILE__(当前网页文件),__LINE__(当前这一行)
魔术常量其实类似变量,其值随着不同代码而变化,不区分大小写
参考手册〉语言参考〉常量〉魔术常量
结果为:
数据类型
整体划分
标量类型: int, float, string, bool
复合类型: array, object
特殊类型: null, resouce
整数类型int, integer
3种整数表示法
十进制写法:123:
$n1 = 123;
八进制写法: 0123
$n2 = 0123;
十六进制写法: 0x123
$n3 = 0x123;
浮点类型float, double, real
有两种写法:
$v1 = 1.234; //带小数点,,就是浮点类型
$v2 = 1.234E3;//含义是:1.234乘以10的3次方,即1234,带E的形式就是浮点数
$v3 = 1234E3;//结果值是1234000,但也是一个浮点数。
浮点数不应直接进行大小比较
因为浮点数在系统内部(cpu级别),很可能都是不精确表达。
要想进行比较,我们只能考虑自己应用中的精度要求的基础上,将其转换为整数进行比较。
1.6678777 1667.8777
通常的做法是:乘以10的精度位数数次方,比如精度要求3位有效数字,则乘以103次方
当整数运算的结果超出整数的范围后,会自动转换为浮点数。
整数的范围,在32位系统下,大约正负20多亿
字符串类型string
js中,虽然有2种字符串表达形式,但也应该理解为是一种字符串:
var str1 = ‘单引号字符串’
var str2 = “双引号字符串”;
但在php中,单引号和双引号字符串,是有不同细节含义的字符串。
php中,有4种字符串形式:
单引号字符串:
结果:
双引号字符串:
结果:
更多的转义符见手册如下:
nowdoc(单引号)定界符字符串:
输出结果为:
heredoc(双引号)定界符字符串:
结果:
布尔类型:bool, boolean
用于标识某种只有两个状态值的数据:true,false——吃没吃,去没去,有没有。。。。。
在应用出,我们常常会(需要)直接将一个数据(可能是各种其他类型)当作一个布尔值来进行判断。
那么此时其实发生的是:会将该数据隐含转换为布尔值。
最常见的语法形式就是: num == 3 flag = 1
If(flag){}
if( 某数据/变量 ){
.................
}
那么,在php中,其他各种数据,隐含转换为布尔值的时候,会当作false的有:
0
0.0
null
“”
“0”
array(); //空数组
未定义的变量 //当然要尽量避免
其他数据就当作true来看待了。
看手册:PHP手册〉附录〉类型比较表〉使用 PHP 函数对变量 $x 进行比较
数组类型array
标识一系列数据的“有序排列”的集合体。
php中,数组的下标可以使用整数或字符串。
数字下标常说“索引号”,
字符串下标常说“键名”。
实际上,在php的报错系统中,都叫做“index”,或offset
数组中还可以存储数组,就可以构成“多维数组”的形式。
索引数组
下标是数字
数组定义
$arr=array();
赋值
$Arr[0]=**
取值
$arr[0]
关联数组
下标是字符串
数组定义
$arr = array(
‘n1’=>’lisi’
‘n2’=>’wangwu’
);
赋值
$Arr[‘n1’]=**
取值
$arr[‘n1’]
数组遍历在php中有专门语法:
foreach( 数组名 as 下标变量$k => 值变量$v1 ){
//这里就是循环体,就可以使用两个变量$k, $v1
}