前端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 的新特性.这个部分内容非常简单,而且非常容易掌握.相信你也更愿意学习这个部分,毕 ...
随机推荐
- 按照Right-BICEP要求设计的测试用例
测试用例: 测试方法:Right-BICEP 测试要求: Right-结果是否正确? B-是否所有的边界条件都是正确的? P-是否满足性能要求? 题目是否有重复? 数量是否可定制? 数值范围是否可定制 ...
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
1. 有一个整数数组,请求出两两之差绝对值最小的值.记住,只要得出最小值即可,不需要求出是哪两个数.(Microsoft) 方法1:两两作差求绝对值,并取最小,O( n2 ). 方法2 ...
- Codeforces Beta Round #6 (Div. 2 Only) 单调队列
题目链接: http://codeforces.com/contest/6/problem/E E. Exposition time limit per test 1.5 secondsmemory ...
- Spring学习(七)——增强类
Spring 切点 什么是切点?切点(Pointcut),每个程序类都拥有多个连接点,如一个拥有两个方法的类,这两个方法都是连接点,即连接点是程序类中客观存在的事物.但在这为数从多的连接点中,如何定位 ...
- Java中final修饰符深入研究
一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...
- CCF——数位之和201512-1
问题描述 给定一个十进制整数n,输出n的各位数字之和. 输入格式 输入一个整数n. 输出格式 输出一个整数,表示答案. 样例输入 20151220 样例输出 13 样例说明 20151220的各位数字 ...
- selenium 概念及练习 !
1.selenium中如何判断元素是否存在? 2.selenium中hidden或者是display = none的元素是否可以定位到? 3.selenium中如何保证操作元素的成功率?也就是说如何保 ...
- cat命令和EOF标识输出shell到文件
在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...
- excel copy cell & batch operation & checkbox
excel copy cell & batch operation & checkbox excel 右下角,下拉/双击 (复制 cell) 注意: 不是选择列
- 动态Lambda表达式打印HelloWorld
最近在用C#与数据库打交道.开发过程中采用了ORM模型(以前是纯sql玩法,复杂的逻辑用存储过程做). 为了能通过配置文件动态地查询字段,也就是说需要能这样写: db.AsQuery<T> ...