PHP从入门到精通

之PHP中的数组

   各位开发者朋友大家好,链接上次更新,我们PHP的学习也更深了一层,本次博主给大家带来PHP数组的数组实例详解的相关资料。数组分为数组数值数值,关联数组,多维数组,本文介绍的非常不错具有参考借鉴价值,希望给广大开发者予以参考。感谢大家的持续关注。

   下面博主将详细介绍PHP数组的知识讲解:

PHP数组的分类

按照下标的不同,PHP数组分为关联数组与索引数组:

索引数组:下标从0开始,依次增长;
关联数组: 下标为字符串格式,每个下标字符串与数组的值一一关联对应。(有点像对象的键值对)

关于关联数组和索引数组:

1、数组中,可以同时存在索引数组与关联数组;
array(1,2,3,"one"=>4);

2、数组中,所有的索引数组,如果不加指定,会去掉关联项,默认增长(即,关联数组不占索引位);
array(1,2,"one"=>3,4,5); //1,2,4,5的索引-->0/1/2/3

3、如果,关联数组的key,是纯十进制整数字符串,则会将此数字转为索引数组的索引值;("10.0"/"08"等格式,仍然是关联数组,不转为索引)
array(1,2,"one"=>3,"9"=>4,"010"=>5);// 1,2,4的索引-->0/1/9

4、 手动指定关联数组的key、索引数组的下标,如果与前面已有的key或下标重复,则后制定的值会覆盖之前的值;
array(1,"one"=>2,0=>5,"one"=>6); --> 打印数组:0=>5,"one"=>6

5、如果手动指定索引数组下标,则后续自增长下标 ,会按照之前下标最大值,依次增长;
array(1,2,7=>3,4);--> 1,2,3,4的下标-->0/1/7/8

实例展示:

$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);

数组的声明方式

1、直接赋值声明:

 $arr[] = 1;$arr[] = 1;$arr[8] = 1;$arr[] = 1;$arr[4] = 1;$arr[] = 1;var_dump($arr);

2、[]字面量声明(PHP5.4版本之后能用)

$arr = [1,2,3,4,"one"=>54,6];
var_dump($arr);

3、 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);

 

数组的遍历

1、使用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/>";
}

2、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>";}

3、使用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);函数,重置数组指针;

4、 使用数组指针遍历数组
① 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恩提供了一组包含强大功能的超全局数组,可以在任何地方、任何作用域不需要声明,直接使用!!不受任何作用域限制。
1、 服务器变量: $_SERVER;
$_SERVER返回包含浏览器头信息、路径、脚本以及服务器系统等各种信息;

如图所示:

2、 环境变量:$_ENV;
$_ENV将系统环境变量,转变为PHP中的数组,就是$_ENV;
PHP默认是关闭此全局数组的。如果需要使用,需修改php.ini文件中的variables_order="GPSC",改为variables_order="EGPSC"即可使用,否则为空;
但是,修改后会造成系统性能损失,官方并不推荐使用。
可以使用getenv()函数取代全局变量,取出每个系统环境变量的值。

phpinfo():函数,包含PHP的各种信息,其中environment模块就是系统环境变量,可以使用getevn()取出其中的每一个值;

3、 HTTP GET变量:$_GET;
$_GET获取前台通过get方式提交的数据;

4、 HHTP POST变量:$_POST;
$_POST获取前台通过post方式提交的数据;
5、 request变量:$_REQUEST;
默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。
由于$_REQUEST同时包含get和post,可能导致get和post的键冲突,并且效率也不高,所有,并不使用request。
6、 HTTP文件上传变量:$_FILES;
通过 HTTP POST 方式上传到当前脚本的项目的数组。 (后续细讲)
7、 HTTP Cookies:$_COOKIE;
获取当前页面cookie信息;(可以手动setcookie("",""),可赋值);
8、 Session变量:$_SESSION;
$_SESSION:取到保存在session中的信息。
!!!!!!$_SESSION很常用,非常重要!!!!!!!!
9、 Global变量:$GLOBALS;
$GLOBALS包含了上述所有全局数组,可以通过$GLOBALS["$_SERVER"]取到$_SERVER;

还可以通过给$GLOBALS数组追加下标,创建全局变量,可以在函数里函数外随意访问:$GLOBALS["name"]="zhangsan";

实例展示:

//1、服务器变量:$_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 />
密&nbsp;码:
<input type="password" name="pwd"/><br />
<input type="submit" name="submit" value="登录" />
</form>

本期分享就到这里,我们下期再见。觉得内容不错的小伙伴请点推荐,欢迎大家在评论下方评论区与博主互动,谢谢大家!

未完,待续。。。

更多详细内容,敬请关注 Q的前端世界的技术博客。

转载于:https://www.cnblogs.com/liuyongqi/p/6987087.html

【PHP】最详细PHP从入门到精通(三)——PHP中的数组相关推荐

  1. C4D致富经典入门到精通(三)

    C4D样条曲线创建 C4D基础界面的介绍与常用快捷键:  C4D致富经典入门到精通(一) C4D父子关系的理解与创建参数几何体与可编辑对象: C4D致富经典入门到精通(二) C4D样条曲线创建 :  ...

  2. 【PHP】最详细PHP从入门到精通(二)——PHP中的函数

     PHP从入门到精通 之PHP中的函数 各位开发者朋友大家好,自上次更新PHP的相关知识,得到了大家的广泛支持.PHP的火爆程度不言而喻,函数作为PHP中极为重要的部分,应诸位的支持,博主继续跟进更新 ...

  3. unity 5.x从入门到精通_Unity学习中值得收藏的学习资料(书籍)与博客

    前言: 对于入门任何领域,收集相关比较优秀的学习资料,都是你不断提高自己的必备技能.而在信息爆炸的时代想要在繁杂的网络世界中找到好的学习资料,必然会耗费一定的时间和精力.为了给大家节省一点时间,在这里 ...

  4. Kali Linux 从入门到精通(三)-入侵系统定制

    Kali Linux 从入门到精通(三)-入侵系统定制 定制 网络配置 临时IP地址 dhclient eth0 ifconfig eth0 192.168.11/24 route add defau ...

  5. jQuery 1.3 for Asp.Net、 CSLA.Net 3.6 for Windows 及 MOSS/WSS 一步一步从入门到精通三个系列的目录...

    jQuery for Asp.Net 一步一步从入门到精通(附 jQuery API 彩色大图) CSLA.Net 3.6 for Windows (C# 2008)一步一步从入门到精通 MOSS/W ...

  6. Matlab从入门到精通-在线性代数中的应用(二):求解齐次线性方程组

    前言 在 Matlab 中,函数 null 用来求解零空间,即满足 Ax=0 的解空间,实际上是求出解空间的一组基(基础解系). 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是 ...

  7. MATLAB从入门到精通-Matlab R2020b中的新标记符号(New-marker-symbols)

    Matlab R2020b中的新标记符号(New-marker-symbols)! MatlabR2020B版本引入了新的水平("_")和垂直("|")线标记符 ...

  8. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  9. MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 多表查询 上篇博客中,我们示例的 ...

最新文章

  1. 江苏省计算机专业公务员,江苏省考冷门专业的“春天”来了!
  2. (NO.00001)iOS游戏SpeedBoy Lite成形记(十)
  3. Ubuntu下安装OpenSSH Server并在客户端远程连接Ubuntu
  4. rocketmq 消息指定_进大厂必备的RocketMQ你会吗?
  5. Castor xsd生成java_java – Castor可以处理从基础XSD导入的多个XSD生成类吗?
  6. linux .bashrc文件修改和生效
  7. java学习(六)多线程 上
  8. 转- Oracle Audit 功能的使用和说明
  9. plsql设置代码提示和自动补全
  10. 拓端tecdat|R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
  11. JixiPix Premium Pack for Mac(创意照片特效软件)
  12. PowerApps中应用如何显示用户详细信息
  13. html页面设置过期时间,meta标签http-equiv=Expires属性写法及用法
  14. 动态文件、2d、3d、Html设置电脑桌面背景【超实用】
  15. mysql超链接_PHP MYSQL超链接和表单
  16. vue项目 设置scrollTop不起作用(解决方法及原因)
  17. 如何更简单的使用Polly
  18. 饿了么“核心交易系统”微服务化5年演化史!20页ppt,万字长文干货!
  19. 超级App+快应用:移动应用研发新思路
  20. 每天学习10句英语-第九天

热门文章

  1. sqlite驱动器下载,以及打开sqlite数据库文件
  2. 令人惊讶的《暗月世界》
  3. python rgb led控件_Python编程:一个不错的基于PyQt的Led控件显示库,建议收藏学习...
  4. 入职某行软件开发中心第三周后的培训体会
  5. 原装8G的笔记本电脑,加了一根8G内存条,扩展槽插入后,启动系统依然只有8G,怎么回事?
  6. pip install速度很慢怎么办
  7. 项目二:新生儿黄疸辨别系统
  8. 注会之会计 固定资产
  9. Windows11系统实用小技巧,配置系统,优化操作
  10. 「从O2O到私域流量」2021长三角(南京)智慧零售大会报名通道开启!