数组是PHP中一个 很很很很很很很很很很重要 的一个 数据类型

学习数组,大家主要学习两部份的知识:

1.数组的定义,定义中的一些注意的坑

2.数组的函数使用

认识数组

数组定义

数组在之前我们让大家记住两个观点:

  1. 数组可以存入 多个不同类型 的数据,是一个复合数据类型。
  2. 数组的英文是array,学一了一下最简单的数组声明。

那我们来进行简单的回顾:

  1. <?php
  2. $shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇');
  3. echo '<pre>';
  4. var_dump($shu);
  5. echo '</pre>';
  6. ?>

在上例中,我们发现我们存入了:

  1. 整型
  2. 浮点
  3. 布尔
  4. 字符串

注: 上例中echo pre这个标签的主要目的是为 原样输出 <HTML的时候学习过&tt;,格式展示的更好看,更清晰。

我们用var_dump()打印出来显示看一下效果:

看图说话:

  1. array(size = 4) 说明里面有4个元素
  2. 0 => int 1 我们知道int是整型的意思,1是一个整型的数值。那前面的0,1,2,3和=>代表什么意思呢?
  3. 最新前的0,1,2,3代表的是值的读取标识号,我们称之为下标或者键(英文:key)
  4. => 是一个符号标准叫法叫作: 键值对应符 。因此,以后再看到 0=> int 1 可以这样来说。 下标访问符0对应整型的1。
  5. 我们还称数组里面的键值对为 元素元素 就是 键值对 的组合。

在学习JavaScript的时候也有键值对的

我们通过上例,其实你一不小心的就完成了数组其中的一种声明方式:

索引数组的声明

所谓索引数组:就是 下标 全为 整型数组

你真的认识数组了吗?

索引数组的下标必须要从0开始吗?
答:这个问题其实不然,索引数组并不一定要从0开始。
那如何能够不从0开始呢?
答:需要用到大家在上面学的一 小块知识 哟。就是键值对应符。我们来动手写写。

代码从模拟开始,模拟长了就有了自己的风格!有点像武侠中的 象形拳 .

  1. <?php
  2. $kele = array('只有不断努力才能博得未来',10 => 'NoAlike', '胖先生课堂' , '信胖哥得永生', 19 => '我最喜欢的歌是悟空' , '欧洲杯开始了');
  3. //打印显示$kele
  4. echo '<pre>';
  5. var_dump($kele);
  6. echo '</pre>';
  7. ?>

上例中,我们一不小心就写了一个索引数组。不过索引数组的下标不是从0 开始的,而是从 10 开始的。

不过上面的例子中,我们觉得写的不优美,我们可以将代码写的更加优美一些,格式更加清晰一些。

  1. <?php
  2. $kele = array(
  3. '只有不断努力才能博得未来',
  4. 10 => 'NoAlike',
  5. '胖先生课堂' ,
  6. '信胖哥得永生',
  7. 19 => '我最喜欢的歌是悟空' ,
  8. '欧洲杯开始了'
  9. );
  10. //打印显示$kele
  11. echo '<pre>';
  12. var_dump($kele);
  13. echo '</pre>';
  14. ?>

代码不是给你一个人看的,是给大家看的,漂亮优雅的代码就是你的形象

运行代码效果:

看图说话:

  1. 索引数组若不强制声明他的下标,他的下标是从0开始的。(我们的第一个数组的值:只有不断努力才能博得未来。这个值的 下标为0 )。
  2. 如果我指定过下标他的下标就为我指定的值。如 下标为10和下标为19 ,都是通过我指定的下标值。
  3. 若某个值(如NoAlike),强制指定了下标(下标为10)。在它后面加上的值(胖先生课堂),不指定下标的话。他们的下标增长规律为 最大值+1

例如:我最喜欢的歌是悟空下标为19.我在后面加上了:欧洲杯开始了。它的下标自动增长为了20。

难吗?其实不难,对不对

驾驭数组

索引数组中增加元素

学习完了索引数组的创建,接下来我们学习索引数组的 增加 | 修改 | 删除

  1. <?php
  2. $minren = array(
  3. '林志玲',
  4. '王珞丹',
  5. '郑晓彤',
  6. '贾玲'
  7. );
  8. //如何向这$minren这个数组中增加元素呢
  9. //猜猜范冰冰的下标是多少?
  10. $minren[] = '范冰冰';
  11. $minren[100] = '范爷';
  12. //它的下标又为几呢?
  13. $minren[] = '李晨';
  14. ?>

总结:

  1. 向索引数组中增加元素用:

    1. 数组变量名[]
    2. 数组变量名[键值]
  2. 键值的增长规则与之前的规则一样。都是最大值加1的原则。

向索引数组中删除元素

我们还拿刚刚的数组来举例:

待着疑问
1.假设我不喜欢:郑晓彤,如何将郑晓彤给删掉呢?
2.如果删除掉后范冰冰的下标为多少呢?
3.如果在后面再追加一个元素,会填掉:“郑晓彤”留下来的空吗?
  1. <?php
  2. $minren = array(
  3. '林志玲',
  4. '王珞丹',
  5. '郑晓彤',
  6. '贾玲',
  7. '范冰冰'
  8. );
  9. unset($minren[2]);//弄掉了
  10. $minren[] = '金星';
  11. echo '<pre>';
  12. var_dump($minren);
  13. echo '</pre>';
  14. ?>

运行效果:

看图说话:

  1. 使用unset 删除变量 的方式来删除数组里面的值。
  2. 删除了中间的值,并 不会 让后面的下标向前自动移动。而是原来的值为多少就为多少
  3. 删除掉其中的某个值,新加入的值不会替换掉原来的位置,依然遵循最大值加1的原则。

更新数组中的数据

我们学习最简单的创造、增加和删除。我相信大家一定能够推理出如何修改值了。

  1. <?php
  2. $minren = array(
  3. '林志玲',
  4. '王珞丹',
  5. '郑晓彤',
  6. '贾玲',
  7. '范冰冰'
  8. );
  9. $minren[4] = '范爷';
  10. $minren[0] = '志玲,不结婚是等我吗?';
  11. echo '<pre>';
  12. var_dump($minren);
  13. echo '</pre>';
  14. ?>

运行结果:

看图说话:

用变量名[键] = 新值。就把数组中的值定的值修改了。

很简单吧

索引数组的其他声明方式

直接用之前未声明的变量,用变量名后面接中括号的方式声明数组。

  1. <?php
  2. //直接写一个变量后面加上中括号,声明变量
  3. $qi[] = '可口可乐';
  4. $qi[10] ='百事可乐';
  5. echo '<pre>';
  6. var_dump($qi);
  7. echo '</pre>';
  8. ?>

推荐:简写方式

  1. <?php
  2. $pang = [
  3. '杨幂',
  4. '王珞丹',
  5. 100 => '刘亦菲',
  6. '黄圣依',
  7. '范冰冰'
  8. ];
  9. echo '<pre>';
  10. var_dump($pang);
  11. echo '</pre>';
  12. ?>

问:数组长多是多少?

关联数组[重点]

声明关联数组

索引数组适当的变一下形就出现了关联数组。只要数组里面有一个为字符串的数组,就为关联数组。

通过上例中,我们发现数组的下标只能够为字符串,当然不能够满足我的需求。

声明关联数组:

  • 跟索引数组的声明方式完成一样。
  • 不同的地方: 必须要指定 字符串下标必须 要使用 键值对应符
  1. <?php
  2. //声明一下关联数组
  3. $rela = array(
  4. '帅' => '胖先生',
  5. '很帅' => '黄晓明',
  6. '灰常灰常帅' => '宁泽涛',
  7. '有男人味的大叔' => '吴秀波',
  8. );
  9. //再来玩玩简洁声明
  10. $drink = [
  11. '美' => '凤姐',
  12. '很美' => '芙蓉姐姐',
  13. 'verymei' => '王涛',
  14. '心中滴女神呀' => '杨澜',
  15. 100 => '孙俪',
  16. '娘娘',
  17. ];
  18. // 输出 $rela
  19. echo '<pre>';
  20. var_dump($rela);
  21. echo '</pre>';
  22. // 输出$drink
  23. echo '<pre>';
  24. var_dump($drink);
  25. echo '</pre>';
  26. ?>

运行结果:

我们通过实验知道:

  1. 声明关联数组是 键名 => 值
  2. 在关联数组可以有索引数组的元素
  3. 重点: 关联数组中的索引数组的元素后再声明了无下标的元素,依然是最大值+1原则。(观察上图中的值为孙俪、娘娘的两个元素)。

操纵关联数组

  1. <?php
  2. $drink = [
  3. '美' => '凤姐',
  4. '很美' => '芙蓉姐姐',
  5. 'verymei' => '王涛',
  6. '心中滴女神呀' => '杨澜',
  7. 100 => '孙俪',
  8. '娘娘',
  9. ];
  10. //追加方式与索引数组是一样的
  11. $drink['ynj'] = '伊能静';
  12. //输出试试
  13. echo '<pre>';
  14. var_dump($drink);
  15. echo '</pre>';
  16. //删除一个试试
  17. unset($drink['verymei']);
  18. echo '<pre>';
  19. var_dump($drink);
  20. echo '</pre>';
  21. //将芙蓉姐姐 改成:心里美才是真的美
  22. $drink['很美'] = '心里美才是真的美';
  23. echo '<pre>';
  24. var_dump($drink);
  25. echo '</pre>';
  26. ?>

运行结果:

关联数组其他形式的声明方式

  1. <?php
  2. $drink['nf'] = '农夫山泉';
  3. $cocacola = '可口可乐';
  4. //当然可以是变量哟
  5. $drink['kl'] = $cocacola;
  6. $data = array(
  7. 'kl' => $cocacola,
  8. );
  9. ?>

通过上例我们发现,在关联数组当中也是可以不用array,直接在变量后面接括号。 括号里面插入字符串下标,一样也声明成功

后面插入变量的例子,只不过把字符串变成了变量,当然没有问题。

数组当中插入数组

数组可以插入整型、浮点、字符串,那么数组当中可不可以插入数组呢?
当然可以

在学习数组的时候,我们定义了这样一组名词。对于 WEB前端 的各位请了解即可

  1. 一维数组 数组里面没有其他数组,只有单纯的一些变量或者值。
  2. 二维数组 数组里面插入了单层的一个数组,或者多个数组
  3. 三维数组 在数组(A)里面插入了一个数组(B),在B数组里面又插入了一层级的数组(C),这种我们就称为三维数组
  4. 超过三维的,统统都叫多维数组。

注: 索引数组和关联数组当中都可以再插入其他数组,让数组变为 多维的

我们来声明一个一维数组,只有一个维度。索引、关联均可,这个操作大家都很熟。

1.一维数组

  1. <?php
  2. //一维的索引数组
  3. $data = [1 , 2 , 3 , 4 , 10 => 250];
  4. //一维的关联数组
  5. $rela = [
  6. 'beijing' => '北京',
  7. 'shanghai' => '上海',
  8. 'tj' => '天津',
  9. ];
  10. echo '<pre>';
  11. var_dump($rela);
  12. echo '</pre>';
  13. echo '<pre>';
  14. var_dump($data);
  15. echo '</pre>';
  16. ?>

2.二维数组

  1. <?php
  2. $person = array(
  3. 'office' => '办公室',
  4. //注意:插入第一个数组哟
  5. 'family' => array(
  6. '爸爸',
  7. '妈妈',
  8. 'yeye' => '爷爷',
  9. 'nn' => '奶奶',
  10. ),
  11. //注意:又插入了一个平级的数组
  12. 'jiaotong' => array(
  13. '自行车',
  14. '摩托车',
  15. '汽车',
  16. '飞机',
  17. ),
  18. );
  19. echo '<pre>';
  20. var_dump($person);
  21. echo '</pre>';
  22. ?>

运行效果

我们发现变量person 是一个数组类型。有三个元素(size=3)。

  • 第一个元素为 office 对应的是一个字符串“办公室”,
  • 第二个元素为family 里面是一个数组,这个数组又有4个元素,值分别为:爸爸、妈妈、爷爷、奶奶。
  • 第三个元素为jiaotong,里面也为一个数组有4个元素,值分别为:自行车、摩托车、汽车、飞机。

好了,二维好声明,只要把格式写对了,确定是在一个数组里面再插入一个数组就好。

那如何访问:爷爷和爸爸这两个值呢?

  1. <?php
  2. $person = [
  3. 'office' => '办公室',
  4. //注意:插入第一个数组哟
  5. 'family' => [
  6. '爸爸',
  7. '妈妈',
  8. 'yeye' => '爷爷',
  9. 'nn' => '奶奶',
  10. ],
  11. //注意:又插入了一个平级的数组
  12. 'jiaotong' => [
  13. '自行车',
  14. '摩托车',
  15. '汽车',
  16. '飞机',
  17. ],
  18. ];
  19. //访问“爸爸”这什值
  20. echo $person['family'][0];
  21. echo '<br />-----分割线------<br />';
  22. //访问“爷爷”这什值
  23. echo $person['family']['yeye'];
  24. echo '<br />-----分割线------<br />';
  25. //访问“汽车”这什值
  26. echo $person['jiaotong'][2];
  27. ?>

我们看看结果如下:

看图说话:

  • 访问二维数组不过是按照之前的下标读取方式依次向下读取即可。
  • 先写上变量,中括号写上family这个下标,再写上要访问元素的下标。

3.三维数组

  1. <?php
  2. $area = array(
  3. 'china' => array(
  4. '上海',
  5. '湖北',
  6. '天津',
  7. '北京' => array(
  8. 'hd' => '海淀',
  9. '朝阳',
  10. '房山',
  11. 'cp' => '昌平',
  12. ),
  13. '广东' => array(
  14. '深圳',
  15. '广州',
  16. '佛山',
  17. 'dg' => '东莞',
  18. ),
  19. ),
  20. 'usa' => array(
  21. '华盛顿',
  22. '旧金山',
  23. '纽约' => array(
  24. '曼哈顿区',
  25. '皇后区',
  26. '布鲁克林区',
  27. ),
  28. ),
  29. );
  30. echo '<pre>';
  31. var_dump($area);
  32. echo '</pre>';
  33. ?>

运行效果:

看图说话:

  • 在变量$area下有二个数组,一个为china,一个为usa。
  • 在china这个数组里面插入了上海、湖北、天津,又插入了北京和广东。而北京和广东又是一个数组。在北京和广东这两个数组里面分别有不同的元素。
  • 在这usa 这个数组里面插美国的华盛顿、旧金山和纽约。而纽约下面又是一个数组,说明了纽约下面的几个区。

所以说,三维数组就是在数组里面再插入一个数组(A),在A数组里面插入一个数组。

获取数据

  1. <?php
  2. $area = array(
  3. 'china' => array(
  4. '上海',
  5. '湖北',
  6. '天津',
  7. '北京' => array(
  8. 'hd' => '海淀',
  9. '朝阳',
  10. '房山',
  11. 'cp' => '昌平',
  12. ),
  13. '广东' => array(
  14. '深圳',
  15. '广州',
  16. '佛山',
  17. 'dg' => '东莞',
  18. ),
  19. ),
  20. 'usa' => array(
  21. '华盛顿',
  22. '旧金山',
  23. '纽约' => array(
  24. '曼哈顿区',
  25. '皇后区',
  26. '布鲁克林区',
  27. ),
  28. ),
  29. );
  30. //读取华盛顿
  31. echo $area['usa']['0'];
  32. //读取:布鲁克林
  33. echo $area['usa']['纽约'][2];
  34. //读取:昌平
  35. echo $area['china']['北京']['cp'];
  36. //修改cp下标的值改为:西城区
  37. $area['china']['北京']['cp'] = '西城区';
  38. //输出看看原来昌平的值是否发生了变化
  39. echo $area['china']['北京']['cp'];
  40. ?>

通过上面我们发现数组学习起来不难。


学习多维数组的难点:

注意格式: 将每个维度的 换行缩进弄整齐 。就不容易出错了。

【切记】

  1. 数组元素间的分割符为逗号,
  2. 在数组中插入数组的时候,不要在结尾处写成了分号(

前端PHP入门-025-数组-重中之重的更多相关文章

  1. openresty 前端开发入门五之Mysql篇

    openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...

  2. Web前端JQuery入门实战案例

    前端jquery入门到实战 为什么要学习Jquery?因为生活. 案例: <!DOCTYPE html> <html lang="zh-CN"> <h ...

  3. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  4. 使用 gulp 搭建前端环境入门篇(转载)

    本文转载自: 使用 gulp 搭建前端环境入门篇

  5. Web前端小白入门指迷

    前注:这篇文章首发于我自己创办的服务于校园的技术分享 [西邮 Upper -- 004]Web前端小白入门指迷,写得很用心也就发在这里. 大前端之旅 大前端有很多种,Shell 前端,客户端前端,Ap ...

  6. Swift语法基础入门二(数组, 字典, 字符串)

    Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...

  7. 好程序员web前端分享javascript关联数组用法总结

    好程序员web前端分享javascript关联数组用法总结,有需要的朋友可以参考下. Hash关联数组定义 代码如下 // 定义空数组 myhash = { } // 直接定义数组 myhash = ...

  8. springmvc后台接前端的参数,数组,集合,复杂对象等

    springmvc后台接前端的参数,数组,集合,复杂对象等 参考地址:https://blog.csdn.net/feicongcong/article/details/54705933  常用的几种 ...

  9. web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万!

    前端学习路径 1.WEB前端快速入门 在本阶段,我们需要掌握 HTML 与 CSS 基础,当然,也包含 H5 和 C3 的新特性.这个部分内容非常简单,而且非常容易掌握.相信你也更愿意学习这个部分,毕 ...

随机推荐

  1. 【探路者】Alpha发布用户使用报告

    预期统计用户使用数量:13人. 博文内容:1用户列表.2评论列表.3统计与总结 1用户列表: 二.评论内容 用户1:1不够好看.2不应该是中国地图为背景,蛇头是人物头像的么?(那是宣传片,不是预览图) ...

  2. KNY团队与“易校”小程序介绍

    一.团队介绍 “KNY”团队是软件工程专业中的一支充满了斗志,充满了自信的队伍,由三人组成,每个队员都在为我们共同一致的目标而努力:我们三个人的小程序的知识都相对薄弱,但我们不甘落后,一直在努力的学习 ...

  3. 大学网站UI设计分析(以学校领导/历届领导为例)

    第一次的冲刺阶段让我过了一把PM的瘾,第一阶段的冲刺完成以后第一感觉就是PM不好当,在大学里做个课程设计当个PM相对而言还是比较容易的,但是我明白,当我们走向工作岗位以后,面临的情况会比学校的情况的复 ...

  4. Java第一次笔记

  5. testng几种写法

    testng几种写法: 1 <!--运行-类--> 2 <?xml version="1.0" encoding="UTF-8"?> 3 ...

  6. 从理论到实践,全方位认识DNS

    从理论到实践,全方位认识DNS 2015-11-23 程序员之家 作者:selfboot 原文:http://segmentfault.com/a/1190000003956853 对于 DNS(Do ...

  7. php反射机制应用

    用来获取指定的类的信息,包括类中的属性,方法,方法权限,注释等 用途:1.thinkPHP框架中的前置,后置控制器的实现 2.与debug_backtrace函数结合使用,文件调用的权限管理 使用方法 ...

  8. PHP 操作redis 详细讲解 转的 http://www.cnblogs.com/jackluo/p/3412670.html

    phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github. ...

  9. Java ISO 8601时间格式转换

    common-lang包: String pattern = "YYYY-MM-dd'T'HH:mm:ssZZ"; System.out.println(DateFormatUti ...

  10. js & right click menu

    js & right click menu https://stackoverflow.com/questions/4909167/how-to-add-a-custom-right-clic ...