PHP数组
PHP数组介绍
数组和变量都是保存数据的,不同的是数组只有一个名称,但是却可以保存多个数据。数组中存放的每个数据叫做“元素”,每个元素有各自的值,数组通过索引来找到元素值。当数组元素个数为n时,表示数组的长度为n。除了一维数组外,PHP也支持多维数组。数组可以作为返回值用于函数,也可以作为参数传入函数。php数组属于关联数组,数组的大小无须事先声明,每个元素的类型不一定相同,同时可以通过整数或字符串索引进行访问,因此php的编译程序不会事先分配内存空间给数组,而是在用户新增元素时,再分配内存空间给该元素。
除[]外,也可以使用{}访问数组元素
当使用布尔数据作为数组的索引时,TRUE会转化为1,而FALSE会转化为0
当使用NULL作为数组的索引时,NULL会转化为空字符串””
当将NULL转化为数组时,会得到一个空数组
当将integer,float,boolean,string,resource等数据类型转化为数组时,会得到一个包含一个元素的数组,元素的索引为0,值为该数据
一维数组
直接赋索引与值创建数组
创建一维数组最简单的方式是直接赋值它的索引与值,索引必须为整数或字符串,值则无限制。
$my_array[key1]=value1;
$my_array[key2]=value2;
使用array()函数创建数组
//创建一个空数组
$my_array = array();
//创建一个包含三个元素的一维数组,没有赋值索引,默认0,1,2
$my_array2 = array(“a”,”b”,”c”);
//自行赋值索引
$my_array3 = array(“a”=>”as”,”b”=>”bs”,”c”=>”cs“);
注:若有赋值的元素的值却没有索引时,例如my_array[] = 100,默认的索引为数组中最大的索引加1,如果数组中没有正整数索引(负数或字符串),默认的索引为0.
访问一维数组
- 通过索引指定要访问的元素
var $my_array = new Array("as","bs");
$my_array[0]="as";
- 通过list()函数
var $my_array = new Array("as","bs");
List($i1,$i2)= $my_array;
//$i1为"as",$i2为"bs
多维数组:
创建多维数组:
创建多维数组最简单的方式是直接赋值它的索引与值,索引必须为整数或字符串,值则无限制
使用array()函数:在array()里面嵌套array()函数来创建多维数组
$my_array = array
(
array("lili",22,18),
array("Wang",2,13),
array("Saab",52,22),
array("Lan",21,135)
);
访问多维数组
通过索引指定要访问的元素
echo $my_array[1][1];
数组运算符
- +:返回两个数组的合集
- ==:如果两个函数有相同的元素,则返回true
- ===:如果两个函数有相同的元素且顺序相同,则返回true
- !=:如果两个数字不相等(相等指的是相同的索引和相同的值),则返回true
- <>:如果两个数字不相等(相等指的是相同的索引和相同的值),则返回true
- !==:如果两个数字不相等(相等指的是相同的索引和相同的值),则返回true
数组相关函数
- is_array(arg):如果arg为array,则返回true
- count(arg),sizeof(arg):回arg中包含几个元素
- in_array(value,arr):如果value存在arr中,则返回true
- unset(value):清除array中的value
- current(arr),pos(arr):返回数组内部指针目前指向的元素
- next(arr):将函数内部指针指向下一个元素并返回该元素
- prev(arr):将函数内部指针指向上一个元素并返回该元素
- end(arr):将函数内部指针指向最后一个元素并返回该元素
- reset(arr):将函数内部指针指向第一个元素并返回该元素
- array_walk(arrfunc [,arg …]):对数组中的每个成员应用用户函数
- array_sum(arr):返回数组arr中各个元素总和
- asort(arr):对数组中元素按值排序
- arsort(arr):将数组中值进行反向排序
- ksort(arr):将数组中元素按照索引排序
PHP超全局数组
以下8个变量,都是数组变量,又称为”预定义变量”。它们的名称是固定的,必须全大写,下划线开头。
- $_GET :通过地址栏传递到服务器的数据,必须是GET方式传递
- $_POST:通过表单 method = post 发送的数据,必须是POST方式传递
- $_REQUEST:包含GET方式 和POST方式的全部数据
- $_SERVER:显示或获取服务器相关的信息
- $GLOBALS:全局中的全局,换话句:包含大部分的超全局数组信息
- $_SESSION:处理服务器的端的会话数据
- $_COOKIE:处理客户端的会话数据
- $_FILES:上传文件需要用到的数组
$_POST的使用
作用:用来存储客户端发送过来的POST的数据
客户端:
<form method="post" action="respose.php">
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submint" value="登录">
<input type="reset" value="重置">
</form>
respose.php:
<?php
$username = $_POST['username'];
$password= $_POST['password'];
echo "$username,$password";
?>
$_GET的使用
(1)通过<a>
向地址栏传数据
<a href="?username=admin&password=admin">提交</a>
(2)通过Js向地址栏传数据
<input type="button" vlaue="单击" onclick="location.href='?username=admin&password=admin'">
服务器端:
<?php
$username = $_GET['username'];
$password= $_GET['password'];
echo "$username,$password";
?>
$_REQUEST的使用
$_REQUEST可以同时获取GET和POST方式传递的数据。$_REQUEST速度比较慢,没有$_GET或$_POST速度快,平常不推荐使用。
客户端:
<form method="post" action="respose.php?ac=login">
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submint" value="登录">
<input type="reset" value="重置">
</form>
服务器端:
<?php
$ac = $_REQUEST['ac'];
$username = $_REQUEST['username'];
$password= $_REQUEST['password'];
echo "$ac,$username,$password";
?>
$_SERVER的使用
获取服务器端的相关信息。$_SERVER数组保存了每一次HTTP请求相关的信息。
echo "服务器IP地址:".$_SERVER['SERVER_ADDR']";
echo "服务器域名:".$_SERVER['SERVER_NAME']";
echo "文件根目录:".$_SERVER['DOCUMENT_ROOT']";
echo "远程IP地址:".$_SERVER['REMOTE_ADDR']";
echo "脚本绝对路径:".$_SERVER['SCRIPT_FILENAME']";
echo "查询字符串:".$_SERVER['QUERY_STRING']";