PHP从入门到精通php
之PHP中的数组前端
各位开发者朋友你们好,连接上次更新,咱们PHP的学习也更深了一层,本次博主给你们带来PHP数组的数组实例详解的相关资料。数组分为数组数值数值,关联数组,多维数组,本文介绍的很是不错具备参考借鉴价值,但愿给广大开发者予以参考。感谢你们的持续关注。数组
下面博主将详细介绍PHP数组的知识讲解:浏览器
PHP数组的分类 |
按照下标的不一样,PHP数组分为关联数组与索引数组:
索引数组:下标从0开始,依次增加;
关联数组: 下标为字符串格式,每一个下标字符串与数组的值一一关联对应。(有点像对象的键值对)服务器
关于关联数组和索引数组:cookie
一、数组中,能够同时存在索引数组与关联数组;
array(1,2,3,"one"=>4);
二、数组中,全部的索引数组,若是不加指定,会去掉关联项,默认增加(即,关联数组不占索引位);
array(1,2,"one"=>3,4,5); //1,2,4,5的索引-->0/1/2/3
三、若是,关联数组的key,是纯十进制整数字符串,则会将此数字转为索引数组的索引值;("10.0"/"08"等格式,仍然是关联数组,不转为索引)
array(1,2,"one"=>3,"9"=>4,"010"=>5);// 1,2,4的索引-->0/1/9
四、 手动指定关联数组的key、索引数组的下标,若是与前面已有的key或下标重复,则后制定的值会覆盖以前的值;
array(1,"one"=>2,0=>5,"one"=>6); --> 打印数组:0=>5,"one"=>6
五、若是手动指定索引数组下标,则后续自增加下标 ,会按照以前下标最大值,依次增加;
array(1,2,7=>3,4);--> 1,2,3,4的下标-->0/1/7/8session
实例展现:函数
$arr1 = array(1,2,3,4,5,6,7); // 索引数组
var_dump($arr1);
$arr2 = array("one"=>1,"two"=>2,"three"=>3); // 关联数组
var_dump($arr2);
$arr3 = array(1,"one"=>2,3,5=>4,5,6,"10.0"=>7,"08"=>8,"08"=>10,"haha"=>9);
var_dump($arr3);post
数组的声明方式 |
一、直接赋值声明:性能
$arr[] = 1; $arr[] = 1; $arr[8] = 1; $arr[] = 1; $arr[4] = 1; $arr[] = 1; var_dump($arr);
二、[]字面量声明(PHP5.4版本以后能用)
$arr = [1,2,3,4,"one"=>54,6]; var_dump($arr);
三、 Array()声明 木有new关键字
$arr = array(1,2,3,4,5); var_dump($arr);
数组元素的读取 |
PHP中,数组支持[]和{}读取下标。
$arr = [1,2,3,"one"=>4];
echo $arr[0];
echo $arr["one"];
echo $arr{"one"};
echo $arr{0};
多维数组 |
数组的一个值,依然是一个数组,咱们称这种数组为多维数组;
多维数组,不要求全部的项都是数组,能够是数组与普通值的混合;
多维数组,也不要求每一个子数组的个数限制,能够是任意的长度;
使用多维数组必定要注意,数组中分隔用逗号!!
原则上,多维数组通常不超过3层使用。
实例展现:
$h51701 = array(
"group1"=>array(
array("name"=>"张三","age"=>14,"sex"=>"男"),
array("name"=>"张三","age"=>14),
array("name"=>"张三"),
"groupName"=>"一组"
),
"group2"=>array(
array("name"=>"张三","age"=>14,"sex"=>"男"),
array("name"=>"张三","age"=>14,"sex"=>"男"),
array("name"=>"张三","age"=>14,"sex"=>"男")
),
"group3"=>array(
array("name"=>"张三","age"=>14,"sex"=>"男"),
array("name"=>"张三","age"=>14,"sex"=>"男"),
array("name"=>"张三","age"=>14,"sex"=>"男")
)
);
var_dump($h51701);
数组的遍历 |
一、使用for循环遍历数组
conut($arr);用于统计数组元素的个数。
for循环只能用于遍历,纯索引数组!!!!
若是存在关联数组,count统计时会统计两种数组的总个数,使用for循环遍历混合数组,致使数组越界!!
$arr = array(1,2,3,5,6,7);
$num = count($arr);//count最好放到for外面,可让函数只执行一次
echo "数组元素的个数{$num}<br/>";
for($i=0;$i<$num;$i++){
echo "{$i}==>{$arr[$i]}<br/>";
}
二、forEach循环遍历数组
foreach能够遍历任何类型的数组!!!
写法以下:
$arr = array(1,2,3,"one"=>4,5,6,7); foreach($arr as $item){ echo "{$item}<br>"; } foreach($arr as $key => $item){ echo "{$key}==>{$item}<br>"; }
三、使用list()、each()、while()遍历数组
list():用于将数组的每个值,赋值给list函数的每个参数。(list函数的参数,必须小于等于数组的元素个数);
list($a,$b,$c)=[1,2,3];-->$a=1; $b=2; $c=3;
注意:① list()在解析数组时,只解析索引数组;
② list能够经过空参数,选择性的解析数组的值;
list($a,,$b)=[1,2,3];-->$a=1; $b=3;
each():用于返回数组当前指针所在位的键值对!并将指针后移一位;
返回值:若是指针有下一位,返回一个数组。包含一个索引数组(0-键,1-值)和一个关联数组("key"-键,"value"-值);
若是指针没有下一位,返回false;
使用list()/each()/while()配合遍历数组:
while(list($key,$value) = each($arr)){ echo "{$key}-->{$value}<br>"; } reset($arr);
!!!!数组使用each()遍历完一遍后,指针使用处于最后一位的下一位;即再用each(),始终返回false;
若是还需使用,需用reset($arr);函数,重置数组指针;
四、 使用数组指针遍历数组
① next:将数组指针,后移一位。并返回后一位的值;没有返回false
② prev:将数组指针,前移一位。并返回前一位的值;没有返回false
③ end: 将数组指针,移至最后一位,返回最后一位的值;空数组返回false
④ reset:将数组指针,恢复到第一位。并返回第一位的值;空数组返回false
⑤ key: 返回当前指针所在位的键;超出返回null。
⑥ current:返回当前指针所在位的值;超出返回false。
$arr = [1,2,3,""=>false,"one"=>5]; while(true){ echo key($arr); echo "--"; echo current($arr); echo "<br>"; //key===null用于排除数组包含空值,致使next返回值为false的状况; if(!next($arr)&&key($arr)===null){ break; } } reset($arr); do{ echo key($arr); echo "--"; echo current($arr); echo "<br>"; }while(next($arr)); reset($arr);
超全局数组 |
超全局数组、超全局变量、预约义数组、预约义变量说的都是他。
PHP给我IM恩提供了一组包含强大功能的超全局数组,能够在任何地方、任何做用域不须要声明,直接使用!!不受任何做用域限制。
一、 服务器变量: $_SERVER;
$_SERVER返回包含浏览器头信息、路径、脚本以及服务器系统等各类信息;
如图所示:
二、 环境变量:$_ENV;
$_ENV将系统环境变量,转变为PHP中的数组,就是$_ENV;
PHP默认是关闭此全局数组的。若是须要使用,需修改php.ini文件中的variables_order="GPSC",改成variables_order="EGPSC"便可使用,不然为空;
可是,修改后会形成系统性能损失,官方并不推荐使用。
可使用getenv()函数取代全局变量,取出每一个系统环境变量的值。
phpinfo():函数,包含PHP的各类信息,其中environment模块就是系统环境变量,可使用getevn()取出其中的每个值;
三、 HTTP GET变量:$_GET;
$_GET获取前台经过get方式提交的数据;
四、 HHTP POST变量:$_POST;
$_POST获取前台经过post方式提交的数据;
五、 request变量:$_REQUEST;
默认状况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。
因为$_REQUEST同时包含get和post,可能致使get和post的键冲突,而且效率也不高,全部,并不使用request。
六、 HTTP文件上传变量:$_FILES;
经过 HTTP POST 方式上传到当前脚本的项目的数组。 (后续细讲)
七、 HTTP Cookies:$_COOKIE;
获取当前页面cookie信息;(能够手动setcookie("",""),可赋值);
八、 Session变量:$_SESSION;
$_SESSION:取到保存在session中的信息。
!!!!!!$_SESSION很经常使用,很是重要!!!!!!!!
九、 Global变量:$GLOBALS;
$GLOBALS包含了上述全部全局数组,能够经过$GLOBALS["$_SERVER"]取到$_SERVER;
还能够经过给$GLOBALS数组追加下标,建立全局变量,能够在函数里函数外随意访问:$GLOBALS["name"]="zhangsan";
实例展现:
//一、服务器变量:$_SERVER;
//var_dump($_SERVER);
//var_dump($_SERVER['HTTP_USER_AGENT']);
//var_dump($_ENV);
//phpinfo();
//var_dump($_GET);
if(isset($_GET["submit"])){
if($_GET["username"]==$_GET["pwd"]){echo "GET登录成功";}
else{echo "GET登录失败";}
}
if(isset($_POST["submit"])){
if($_POST["username"]==$_POST["pwd"]){echo "POST登录成功";}
else{echo "POST登录失败";}
}
//var_dump($_REQUEST);
//var_dump($_COOKIE);
//session_start();
//$_SESSION["haha"]="hehe";
//var_dump($_SESSION);
//var_dump($GLOBALS["$_SERVER"]);
var_dump($http_response_header);
?>
<form action="" method="post" autocomplete="on">
用户名:
<input type="text" name="username" /><br />
密 码:
<input type="password" name="pwd"/><br />
<input type="submit" name="submit" value="登陆" />
</form>
本期分享就到这里,咱们下期再见。以为内容不错的小伙伴请点推荐,欢迎你们在评论下方评论区与博主互动,谢谢你们!
未完,待续。。。
更多详细内容,敬请关注 Q的前端世界的技术博客。