数组与Post_Get提交表单

php中数组,是个复合的数据类型 像python的字典各列表整合,

  • 不用指定数组大小
  • 长度可变
  • 而且内容可不为同一个类型

创建数组

1
2
$arr=array($num,$id,$score);#正式写法
$arr=[$num,$id,$score]; #短写法

#5.4版本后可以用短写法

索引可以是整数,可以是字符串!!!使用时甚至不用提前声明!!!

1
2
3
4
5
$var['name']='lthero';
$var[1]=12;
#下标可以不连续
$var[10]=22;
echo $var[1],$var['name'],$var[10];

甚至可以省略索引值,则默认以0开始用数字索引

1
2
3
4
5
6
$var[]=11;
$var[]=22;
$var[]=66;
print_r($var);
#结果为
array 0=>11;1=>22;2=>66

输出

1
2
print_r($var);
或 var_dump($var);

数组计数

1
2
3
4
5
count()函数
如$arr=array(1,2,3,4);
echo count($arr);就是4;
$arr2=array(array(1,2,3),array(4,5,6));
count($arr2);

数组遍历

用索引遍历

1
2
3
4
5
$arr=array(1,2,3,4,5);
#一般
for($i=0;$i<count($arr);$i++){
echo $arr[$i],'<br/>';
}

若用下标遍历:

1
2
3
4
5
6
7
foreach(数组变量 as 变量1=>变量2){
//变量1为索引值 变量2为对应值
echo 变量1,变量2,'<br/>';
}
foreach($arr as $key=>$val){
echo $key,$val,'<br/>';
}

数组处理的相关函数

array_count_values($arr)

统计数组中所有值出现次数

array_search(value,$array);

找到这个值所在下标

in_array(value,$array);

数组是否包含这个值 像python的in,返回true || false

list()

与python的不一样

1
2
3
4
5

#数组必须为索引不能为字符串,从左向右赋值
$arr=['lthero',66,21,30];
list($arr2[],$arr2[],$arr2[])=$arr;
print_r($arr2);

asort()

升序排序用法,对数组的值进行排序,直接改变原数组的值,可以按数字或字符串排序

1
2
3
4
$arr=[2,1,3];
asort($arr);
printf_r($arr);
1,2,3

arsort()

降序

array_filter()

用回调函数过滤数组中的单元 遍历 array 数组中的每个值,并将每个值传递给 callback 回调函数。如果 callback 回调函数返回 true,则将 array 数组中的当前值返回到结果 array 数组中。 返回的结果保持下标位置不变,而索引会不连续,再用array_values()对数组重新索引

举例

1
2
3
4
5
6
7
8
#过滤,返回全部奇数
function odd($var){
return $var &1;
}
for($i=1;$i<10;$i++){
$arr[]=$i;
}
print_r(array_filter($arr,'odd'));

Post与Get

预定义超全局数组

已经定义好的变量,存放数据类型是数组,超全局:有效区为全局,函数内不用global定义

  • $GLOBALS
  • $_SERVER
  • $_GET $POST
  • $FILES

先讲下客户机在请求数据时,有两种提交数据给服务器的方式

get方式

对应超全局变量为$_GET 将返回传入的参数

url的尾号用 ? 表示开始传递参数 用 & 连接多个参数

1
https://lthero.cn/demo.php?参数&参数&参数

如 url输入

1
47.107.33.54?id=10&name='lthero'

结果显示(代码中用var_dump($_GET) 可以显示用户提交的信息)

1
array(2) { ["id"]=> string(2) "10" ["name"]=> string(8) "'lthero'" }

$_GET索引值为参数名,索引值为对应值

1
2
echo $_GET['id'];
结果10

优点:请求数据方便

缺点:明文上传不安全

post方式

超全局变量$_POST ,使用此变量可以得到传入的参数值

在html中写个表单

元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
#var_dump($_GET);
#echo "<br/>";
#在此就能看到post上传的内容使用$_POST预变量
#索引值为input中的name值
var_dump($_POST);
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
#这里采用POST方式提交到服务器,同理可以改成用get方式提交
<form action="" method="post">
#输入信息后点击上传,然后可以让服务器获得数据并验证跳转等等操作
name:<input type="text" name="username" />
sex:<input type='text' name="sex" />
<input type="submit" value="post" />
</form>
</body>
</html>

优点:不是明文上传