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

看图说话:
键值对应符 。因此,以后再看到 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 )。下标为10和下标为19 ,都是通过我指定的下标值。最大值+1 。例如:我最喜欢的歌是悟空下标为19.我在后面加上了:欧洲杯开始了。它的下标自动增长为了20。
难吗?其实不难,对不对
索引数组中增加元素学习完了索引数组的创建,接下来我们学习索引数组的 增加 | 修改 | 删除 。
<?php$minren = array(‘林志玲‘,‘王珞丹‘,‘郑晓彤‘,‘贾玲‘);//如何向这$minren这个数组中增加元素呢//猜猜范冰冰的下标是多少?$minren[] = ‘范冰冰‘;$minren[100] = ‘范爷‘;//它的下标又为几呢?$minren[] = ‘李晨‘;?>
总结:
我们还拿刚刚的数组来举例:
| 待着疑问 |
|---|
| 1.假设我不喜欢:郑晓彤,如何将郑晓彤给删掉呢? |
| 2.如果删除掉后范冰冰的下标为多少呢? |
| 3.如果在后面再追加一个元素,会填掉:“郑晓彤”留下来的空吗? |
<?php$minren = array(‘林志玲‘,‘王珞丹‘,‘郑晓彤‘,‘贾玲‘,‘范冰冰‘);unset($minren[2]);//弄掉了$minren[] = ‘金星‘;echo ‘<pre>‘;var_dump($minren);echo ‘</pre>‘;?>
运行效果:

看图说话:
删除变量 的方式来删除数组里面的值。不会 让后面的下标向前自动移动。而是原来的值为多少就为多少我们学习最简单的创造、增加和删除。我相信大家一定能够推理出如何修改值了。
<?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前端 的各位请了解即可
注: 索引数组和关联数组当中都可以再插入其他数组,让数组变为 多维的 。
我们来声明一个一维数组,只有一个维度。索引、关联均可,这个操作大家都很熟。
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)。
好了,二维好声明,只要把格式写对了,确定是在一个数组里面再插入一个数组就好。
那如何访问:爷爷和爸爸这两个值呢?
<?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];?>
我们看看结果如下:

看图说话:
3.三维数组
<?php$area = array(‘china‘ => array(‘上海‘,‘湖北‘,‘天津‘,‘北京‘ => array(‘hd‘ => ‘海淀‘,‘朝阳‘,‘房山‘,‘cp‘ => ‘昌平‘,),‘广东‘ => array(‘深圳‘,‘广州‘,‘佛山‘,‘dg‘ => ‘东莞‘,),),‘usa‘ => array(‘华盛顿‘,‘旧金山‘,‘纽约‘ => array(‘曼哈顿区‘,‘皇后区‘,‘布鲁克林区‘,),),);echo ‘<pre>‘;var_dump($area);echo ‘</pre>‘;?>
运行效果:

看图说话:
所以说,三维数组就是在数组里面再插入一个数组(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‘];?>
通过上面我们发现数组学习起来不难。
学习多维数组的难点:
注意格式: 将每个维度的 换行 、 缩进弄整齐 。就不容易出错了。
【切记】
- 数组元素间的分割符为逗号,
- 在数组中插入数组的时候,不要在结尾处写成了分号(
;)
标签:
原文地址:http://www.cnblogs.com/pangxiansheng/p/5ec0d87089b7249db954710ca9128cc4.html