前端PHP入门-025-数组-重中之重
数组是PHP中一个
很很很很很很很很很很重要的一个数据类型。
学习数组,大家主要学习两部份的知识:
1.数组的定义,定义中的一些注意的坑
2.数组的函数使用
认识数组
数组定义
数组在之前我们让大家记住两个观点:
- 数组可以存入
多个不同类型的数据,是一个复合数据类型。 - 数组的英文是array,学一了一下最简单的数组声明。
那我们来进行简单的回顾:
<?php$shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇');echo '<pre>';var_dump($shu);echo '</pre>';?>
在上例中,我们发现我们存入了:
- 整型
- 浮点
- 布尔
- 字符串
注: 上例中echo pre这个标签的主要目的是为 原样输出 <HTML的时候学习过&tt;,格式展示的更好看,更清晰。
我们用var_dump()打印出来显示看一下效果:

看图说话:
- array(size = 4) 说明里面有4个元素
- 0 => int 1 我们知道int是整型的意思,1是一个整型的数值。那前面的0,1,2,3和=>代表什么意思呢?
- 最新前的0,1,2,3代表的是值的读取标识号,我们称之为下标或者键(英文:key)
- => 是一个符号标准叫法叫作:
键值对应符。因此,以后再看到 0=> int 1 可以这样来说。 下标访问符0对应整型的1。 - 我们还称数组里面的键值对为
元素,元素就是键值对的组合。
在学习JavaScript的时候也有键值对的
我们通过上例,其实你一不小心的就完成了数组其中的一种声明方式:
① 索引数组的声明
所谓索引数组:就是 下标 全为 整型 的 数组 。
你真的认识数组了吗?
| 索引数组的下标必须要从0开始吗? |
|---|
| 答:这个问题其实不然,索引数组并不一定要从0开始。 |
| 那如何能够不从0开始呢? |
|---|
答:需要用到大家在上面学的一 小块知识 哟。就是键值对应符。我们来动手写写。 |
代码从模拟开始,模拟长了就有了自己的风格!有点像武侠中的 象形拳 .
<?php$kele = array('只有不断努力才能博得未来',10 => 'NoAlike', '胖先生课堂' , '信胖哥得永生', 19 => '我最喜欢的歌是悟空' , '欧洲杯开始了');//打印显示$keleecho '<pre>';var_dump($kele);echo '</pre>';?>
上例中,我们一不小心就写了一个索引数组。不过索引数组的下标不是从0 开始的,而是从 10 开始的。
不过上面的例子中,我们觉得写的不优美,我们可以将代码写的更加优美一些,格式更加清晰一些。
<?php$kele = array('只有不断努力才能博得未来',10 => 'NoAlike','胖先生课堂' ,'信胖哥得永生',19 => '我最喜欢的歌是悟空' ,'欧洲杯开始了');//打印显示$keleecho '<pre>';var_dump($kele);echo '</pre>';?>
代码不是给你一个人看的,是给大家看的,漂亮优雅的代码就是你的形象
运行代码效果:

看图说话:
- 索引数组若不强制声明他的下标,他的下标是从0开始的。(我们的第一个数组的值:只有不断努力才能博得未来。这个值的
下标为0)。 - 如果我指定过下标他的下标就为我指定的值。如
下标为10和下标为19,都是通过我指定的下标值。 - 若某个值(如NoAlike),强制指定了下标(下标为10)。在它后面加上的值(胖先生课堂),不指定下标的话。他们的下标增长规律为
最大值+1。
例如:我最喜欢的歌是悟空下标为19.我在后面加上了:欧洲杯开始了。它的下标自动增长为了20。
难吗?其实不难,对不对
驾驭数组
向索引数组中增加元素
学习完了索引数组的创建,接下来我们学习索引数组的 增加 | 修改 | 删除 。
<?php$minren = array('林志玲','王珞丹','郑晓彤','贾玲');//如何向这$minren这个数组中增加元素呢//猜猜范冰冰的下标是多少?$minren[] = '范冰冰';$minren[100] = '范爷';//它的下标又为几呢?$minren[] = '李晨';?>
总结:
- 向索引数组中增加元素用:
- 数组变量名[]
- 数组变量名[键值]
- 键值的增长规则与之前的规则一样。都是最大值加1的原则。
向索引数组中删除元素
我们还拿刚刚的数组来举例:
| 待着疑问 |
|---|
| 1.假设我不喜欢:郑晓彤,如何将郑晓彤给删掉呢? |
| 2.如果删除掉后范冰冰的下标为多少呢? |
| 3.如果在后面再追加一个元素,会填掉:“郑晓彤”留下来的空吗? |
<?php$minren = array('林志玲','王珞丹','郑晓彤','贾玲','范冰冰');unset($minren[2]);//弄掉了$minren[] = '金星';echo '<pre>';var_dump($minren);echo '</pre>';?>
运行效果:

看图说话:
- 使用unset
删除变量的方式来删除数组里面的值。 - 删除了中间的值,并
不会让后面的下标向前自动移动。而是原来的值为多少就为多少 - 删除掉其中的某个值,新加入的值不会替换掉原来的位置,依然遵循最大值加1的原则。
更新数组中的数据
我们学习最简单的创造、增加和删除。我相信大家一定能够推理出如何修改值了。
<?php$minren = array('林志玲','王珞丹','郑晓彤','贾玲','范冰冰');$minren[4] = '范爷';$minren[0] = '志玲,不结婚是等我吗?';echo '<pre>';var_dump($minren);echo '</pre>';?>
运行结果:

看图说话:
用变量名[键] = 新值。就把数组中的值定的值修改了。
很简单吧
索引数组的其他声明方式
直接用之前未声明的变量,用变量名后面接中括号的方式声明数组。
<?php//直接写一个变量后面加上中括号,声明变量$qi[] = '可口可乐';$qi[10] ='百事可乐';echo '<pre>';var_dump($qi);echo '</pre>';?>
推荐:简写方式
<?php$pang = ['杨幂','王珞丹',100 => '刘亦菲','黄圣依','范冰冰'];echo '<pre>';var_dump($pang);echo '</pre>';?>
问:数组长多是多少?
关联数组[重点]
声明关联数组
索引数组适当的变一下形就出现了关联数组。只要数组里面有一个为字符串的数组,就为关联数组。
通过上例中,我们发现数组的下标只能够为字符串,当然不能够满足我的需求。
声明关联数组:
- 跟索引数组的声明方式完成一样。
不同的地方:必须要指定字符串的下标和必须要使用键值对应符。
<?php//声明一下关联数组$rela = array('帅' => '胖先生','很帅' => '黄晓明','灰常灰常帅' => '宁泽涛','有男人味的大叔' => '吴秀波',);//再来玩玩简洁声明$drink = ['美' => '凤姐','很美' => '芙蓉姐姐','verymei' => '王涛','心中滴女神呀' => '杨澜',100 => '孙俪','娘娘',];// 输出 $relaecho '<pre>';var_dump($rela);echo '</pre>';// 输出$drinkecho '<pre>';var_dump($drink);echo '</pre>';?>
运行结果:

我们通过实验知道:
- 声明关联数组是 键名 => 值
- 在关联数组可以有索引数组的元素
重点:关联数组中的索引数组的元素后再声明了无下标的元素,依然是最大值+1原则。(观察上图中的值为孙俪、娘娘的两个元素)。
操纵关联数组
<?php$drink = ['美' => '凤姐','很美' => '芙蓉姐姐','verymei' => '王涛','心中滴女神呀' => '杨澜',100 => '孙俪','娘娘',];//追加方式与索引数组是一样的$drink['ynj'] = '伊能静';//输出试试echo '<pre>';var_dump($drink);echo '</pre>';//删除一个试试unset($drink['verymei']);echo '<pre>';var_dump($drink);echo '</pre>';//将芙蓉姐姐 改成:心里美才是真的美$drink['很美'] = '心里美才是真的美';echo '<pre>';var_dump($drink);echo '</pre>';?>
运行结果:

关联数组其他形式的声明方式
<?php$drink['nf'] = '农夫山泉';$cocacola = '可口可乐';//当然可以是变量哟$drink['kl'] = $cocacola;$data = array('kl' => $cocacola,);?>
通过上例我们发现,在关联数组当中也是可以不用array,直接在变量后面接括号。 括号里面插入字符串下标,一样也声明成功 。
后面插入变量的例子,只不过把字符串变成了变量,当然没有问题。
数组当中插入数组
| 数组可以插入整型、浮点、字符串,那么数组当中可不可以插入数组呢? |
|---|
当然可以 |
在学习数组的时候,我们定义了这样一组名词。对于 WEB前端 的各位请了解即可
- 一维数组 数组里面没有其他数组,只有单纯的一些变量或者值。
- 二维数组 数组里面插入了单层的一个数组,或者多个数组
- 三维数组 在数组(A)里面插入了一个数组(B),在B数组里面又插入了一层级的数组(C),这种我们就称为三维数组
- 超过三维的,统统都叫多维数组。
注: 索引数组和关联数组当中都可以再插入其他数组,让数组变为 多维的 。
我们来声明一个一维数组,只有一个维度。索引、关联均可,这个操作大家都很熟。
1.一维数组
<?php//一维的索引数组$data = [1 , 2 , 3 , 4 , 10 => 250];//一维的关联数组$rela = ['beijing' => '北京','shanghai' => '上海','tj' => '天津',];echo '<pre>';var_dump($rela);echo '</pre>';echo '<pre>';var_dump($data);echo '</pre>';?>
2.二维数组
<?php$person = array('office' => '办公室',//注意:插入第一个数组哟'family' => array('爸爸','妈妈','yeye' => '爷爷','nn' => '奶奶',),//注意:又插入了一个平级的数组'jiaotong' => array('自行车','摩托车','汽车','飞机',),);echo '<pre>';var_dump($person);echo '</pre>';?>
运行效果

我们发现变量person 是一个数组类型。有三个元素(size=3)。
- 第一个元素为 office 对应的是一个字符串“办公室”,
- 第二个元素为family 里面是一个数组,这个数组又有4个元素,值分别为:爸爸、妈妈、爷爷、奶奶。
- 第三个元素为jiaotong,里面也为一个数组有4个元素,值分别为:自行车、摩托车、汽车、飞机。
好了,二维好声明,只要把格式写对了,确定是在一个数组里面再插入一个数组就好。
那如何访问:爷爷和爸爸这两个值呢?
<?php$person = ['office' => '办公室',//注意:插入第一个数组哟'family' => ['爸爸','妈妈','yeye' => '爷爷','nn' => '奶奶',],//注意:又插入了一个平级的数组'jiaotong' => ['自行车','摩托车','汽车','飞机',],];//访问“爸爸”这什值echo $person['family'][0];echo '<br />-----分割线------<br />';//访问“爷爷”这什值echo $person['family']['yeye'];echo '<br />-----分割线------<br />';//访问“汽车”这什值echo $person['jiaotong'][2];?>
我们看看结果如下:

看图说话:
- 访问二维数组不过是按照之前的下标读取方式依次向下读取即可。
- 先写上变量,中括号写上family这个下标,再写上要访问元素的下标。
3.三维数组
<?php$area = array('china' => array('上海','湖北','天津','北京' => array('hd' => '海淀','朝阳','房山','cp' => '昌平',),'广东' => array('深圳','广州','佛山','dg' => '东莞',),),'usa' => array('华盛顿','旧金山','纽约' => array('曼哈顿区','皇后区','布鲁克林区',),),);echo '<pre>';var_dump($area);echo '</pre>';?>
运行效果:

看图说话:
- 在变量$area下有二个数组,一个为china,一个为usa。
- 在china这个数组里面插入了上海、湖北、天津,又插入了北京和广东。而北京和广东又是一个数组。在北京和广东这两个数组里面分别有不同的元素。
- 在这usa 这个数组里面插美国的华盛顿、旧金山和纽约。而纽约下面又是一个数组,说明了纽约下面的几个区。
所以说,三维数组就是在数组里面再插入一个数组(A),在A数组里面插入一个数组。
获取数据
<?php$area = array('china' => array('上海','湖北','天津','北京' => array('hd' => '海淀','朝阳','房山','cp' => '昌平',),'广东' => array('深圳','广州','佛山','dg' => '东莞',),),'usa' => array('华盛顿','旧金山','纽约' => array('曼哈顿区','皇后区','布鲁克林区',),),);//读取华盛顿echo $area['usa']['0'];//读取:布鲁克林echo $area['usa']['纽约'][2];//读取:昌平echo $area['china']['北京']['cp'];//修改cp下标的值改为:西城区$area['china']['北京']['cp'] = '西城区';//输出看看原来昌平的值是否发生了变化echo $area['china']['北京']['cp'];?>
通过上面我们发现数组学习起来不难。
学习多维数组的难点:
注意格式: 将每个维度的 换行 、 缩进弄整齐 。就不容易出错了。
【切记】
- 数组元素间的分割符为逗号,
- 在数组中插入数组的时候,不要在结尾处写成了分号(
;)
前端PHP入门-025-数组-重中之重的更多相关文章
- openresty 前端开发入门五之Mysql篇
openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...
- Web前端JQuery入门实战案例
前端jquery入门到实战 为什么要学习Jquery?因为生活. 案例: <!DOCTYPE html> <html lang="zh-CN"> <h ...
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
- 使用 gulp 搭建前端环境入门篇(转载)
本文转载自: 使用 gulp 搭建前端环境入门篇
- Web前端小白入门指迷
前注:这篇文章首发于我自己创办的服务于校园的技术分享 [西邮 Upper -- 004]Web前端小白入门指迷,写得很用心也就发在这里. 大前端之旅 大前端有很多种,Shell 前端,客户端前端,Ap ...
- Swift语法基础入门二(数组, 字典, 字符串)
Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...
- 好程序员web前端分享javascript关联数组用法总结
好程序员web前端分享javascript关联数组用法总结,有需要的朋友可以参考下. Hash关联数组定义 代码如下 // 定义空数组 myhash = { } // 直接定义数组 myhash = ...
- springmvc后台接前端的参数,数组,集合,复杂对象等
springmvc后台接前端的参数,数组,集合,复杂对象等 参考地址:https://blog.csdn.net/feicongcong/article/details/54705933 常用的几种 ...
- web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万!
前端学习路径 1.WEB前端快速入门 在本阶段,我们需要掌握 HTML 与 CSS 基础,当然,也包含 H5 和 C3 的新特性.这个部分内容非常简单,而且非常容易掌握.相信你也更愿意学习这个部分,毕 ...
随机推荐
- python request 获取cookies value值的方法
import requests res = requests.get(url) cookies = requests.utils.dict_from_cookiejar(res.cookies) pr ...
- lambda(匿名函数)---基于python
在学习python的过程中,lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda? 下面就上面的问题进行一下解答. 1.lambda是什么? ...
- Beta冲刺第二周王者荣耀交流协会第四次会议
1.例会照片: 成员:王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐. master:王玉玲 2.时间跨度: 2017年11月20日 18:00 — 18:13,总计13分钟. 3.地点: 一 ...
- 下载与安装APache Cordova
最近老师留了写网页版或手机版程序,但先前没有好好听javaweb,而今年又没选Android移动应用开发.所以去图书馆借了一本书是关于HTML5+CSS3+jQueryMobile的. 这几天配置了打 ...
- 测试bug
模板在运行时出现了以下 1 个错误:---------------------------Controller.tt(-1,-1) : error : 获取 AppDomain 以便从主机运行转换时出 ...
- Alpha冲刺阶段集合贴
第一篇:http://www.cnblogs.com/xss6666/p/8870734.html 第二篇:http://www.cnblogs.com/xss6666/p/8893683.html ...
- PAT 甲级 1144 The Missing Number
https://pintia.cn/problem-sets/994805342720868352/problems/994805343463260160 Given N integers, you ...
- MyEclipse+SSH开发环境配置
MyEclipse+Struts+Hibernate+Mysql开发环境配置 软件: jdk-6u22-windows-x64.exe apache-tomcat-6.0.29.exe mysql-5 ...
- Mysql的表名/字段名/字段值是否区分大小写
1.MySQL默认情况下是否区分大小写,使用show Variables like '%table_names'查看lower_case_table_names的值,0代表区分,1代表不区分. 2.m ...
- CF337D-Book of Evil
题目 一棵树上有一个古籍,这个古籍可以影响到与它距离为 \(d\) 以内的点.现在给出被影响到的点,问古籍可能在多少个点上. \(0\le m,d\le n\le 10^5\). 分析 原问题不好做, ...