码迷,mamicode.com
首页 > 编程语言 > 详细

前端PHP入门-025-数组-重中之重

时间:2016-08-09 07:03:38      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

数组是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-数组-重中之重

标签:

原文地址:http://www.cnblogs.com/pangxiansheng/p/5ec0d87089b7249db954710ca9128cc4.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!