来源:自学PHP网 时间:2018-02-09 16:45 作者: 阅读:次
[导读] PHP中文网教程为您提供《php入门教程之一周学会PHP》之 php数组的定义 章节的在线实战教程供您学习,你可以进行笔记、提问、讨论和资料下载...
数组在之前我们让大家记住两个观点: 1.数组可以存入多个不同类型的数据,是一个复合数据类型。 2.数组的英文是array,学一了一下最简单的数组声明。 那我们来进行简单的回顾: <?php $shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇'); echo '<pre>'; var_dump($shu); echo '</pre>'; ?> 在上例中,我们发现我们存入了: 1.整型 2.浮点 3.布尔 4.字符串 注:上例中echo pre这个标签的主要目的是为原样输出,格式展示的更好看,更清晰。 我们用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.我们还称数组里面的键值对为元素,元素就是键值对的组合。 哦耶! 数组好像还挺好学的,全是一些规律哟。 我们通过上例,其实你一不小心的就完成了数组其中的一种声明方式:索引数组的声明哟。 所谓索引数组:就是下标全为整型的数组。 索引数组的下标必须要从0开始吗? 答:这个问题其实不然,索引数组并不一定要从0开始。 那如何能够不从0开始呢? 答:需要用到大家在上面学的一小块知识哟。就是键值对应符。我们来动手写写。 <?php $kele = array('只有不断努力才能博得未来',10 => 'NoAlike', 'PHP中文网' , '去PHP中文网学PHP', 19 => '凤姐和芙蓉我都爱' , '杨幂我最爱'); //打印显示$kele echo '<pre>'; var_dump($kele); echo '</pre>'; ?> 上例中,我们一不小心就写了一个索引数组。不过索引数组的下标不是从0 开始的,而是从10开始的。 不过上面的例子中,我们觉得写的不优美,我们可以将代码写的更加优美一些,格式更加清晰一些。 <?php $kele = array( '只有不断努力才能博得未来', 10 => 'NoAlike', 'PHP中文网' , '去PHP中文网学PHP', 19 => '凤姐和芙蓉我都爱' , '杨幂我最爱' ); //打印显示$kele echo '<pre>'; var_dump($kele); echo '</pre>'; ?> 这样是不是看得更清楚,一行对应一个数组的值。 我们执行一下代码,看一下效果: 通过上面的效果,我们来总结规律: 1.索引数组若不强制声明他的下标,他的下标是从0开始的。(我们的第一个数组的值:只有不断努力才能博得未来。这个值的下标为0)。 2.如果我指定过下标他的下标就为我指定的值。如下标为10和下标为19的,都是我指定过的值。 3.若某个值(如NoAlike),强制指定了下标(下标为10)。在它后面加上的值(PHP中文网),不指定下标的话。他们的下标增长规律为最大值+1。 例如:凤姐和芙蓉我都爱的下标为19.我在后面加上了:杨幂我最爱。它的下标自动增长为了11。 不知不觉,你已经学会了索引数组的创建,神奇吧?真为你感到高兴! 向索引数组中增加元素 学习完了索引数组的创建,接下来我们学习索引数组的增加、修改和删除。 <?php $minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依' ); //如何向这$minren这个数组中增加元素呢 //猜猜范冰冰的下标是多少? $minren[] = '范冰冰'; $minren[100] = '范爷'; //它的下标又为几呢? $minren[] = '李晨'; ?> 总结: 1.向索引数组中增加元素用: 数组变量名[]、数组变量名[键值]这两种方式来增加元素 2.键值的增长规则与之前的规则一样。都是最大值加1的原则。 向索引数组中删除元素 我们还拿刚刚的数组来举例: <?php $minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依', '范冰冰' ); //假设我不喜欢:黄圣依,如何将黄圣依给删掉掉呢? //如果删除掉后范冰冰的下标为多少呢? //如果在后面再追加一个元素,会填掉:“黄圣依”留下来的空吗? unset($minren[3]); $minren[] = '金星'; echo '<pre>'; var_dump($minren); echo '</pre>'; ?> 看看效果: 1.使用unset删除变量的方式来删除数组里面的值。 2.删除了中间的值,并不会让后面的下标向前自动移动。而是原来的值为多少就为多少 3.删除掉其中的某个值,新加入的值不会替换掉原来的位置,依然遵循最大值加1的原则。 修改值 我们学习最简单的创造、增加和删除。我相信大家一定能够推理出如何修改值了。 <?php $minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依', '范冰冰' ); $minren[5] = '范爷'; $minren[2] = '亦菲,不要嫁给韩国人好吗?'; echo '<pre>'; var_dump($minren); echo '</pre>'; ?> 执行上面的代码,输出看看结果。 1.用变量名[键] = 新值。就把数组中的值定的值修改了。 索引数组的其他声明方式 通过上面的例子,我们学习到了数组的声明。我们来学一下数组的其他声明方式。 一、直接用之前未声明的变量,用变量名后面接中括号的方式声明数组。 <?php //直接写一个变量后面加上中括号,声明变量 $qi[] = '可口可乐'; $qi[10] ='百事可乐'; echo '<pre>'; var_dump($qi); echo '</pre>'; ?> 二、每次用array()写的太麻烦了,还可以不用写array哟,更简单。 <?php $minren = [ '杨幂', '王珞丹', 100 => '刘亦菲', '黄圣依', '范冰冰' ]; echo '<pre>'; var_dump($minren); echo '</pre>'; ?> 上面是另外两种写法。当然,你自己喜欢使用哪一种就使用哪一种来声明。 关联数组 索引数组适当的变一下形就出现了关联数组。只要数组里面有一个为字符串的数组,就为关联数组。 通过上例中,我们发现数组的下标只能够为字符串,当然不能够满足我的需求。 假设我想声明一个下标为帅对应陈奕迅这个值。肯定不能满足我的需求。 那我们来声明一下关联数组。跟索引数组的声明方式完成一样。不过不同的是,必须要指定字符串的下标和必须要使用键值对应符。 <?php //声明一下关联数组 $rela = array( '帅' => '陈奕迅', '很帅' => '黄晓明', '灰常灰常帅' => '宁泽涛', '有男人味的大叔' => '吴秀波', ); //再来玩玩简洁声明 $drink = [ '美' => '凤姐', '很美' => '芙蓉姐姐', 'verymei' => '杨幂', '心中滴女神呀' => '华妃', 100 => '孙俪', '娘娘', ]; // 输出 $rela echo '<pre>'; var_dump($rela); echo '</pre>'; // 输出$drink echo '<pre>'; var_dump($drink); echo '</pre>'; ?> 我们来实验一下看看最终的结果是什么样的: 我们通过实验知道: 1.声明关联数组是 键名 => 值 2.在关联数组可以有索引数组的元素 3.关联数组中的索引数组的元素后再声明了无下标的元素,依然是最大值+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, ); echo '<pre>'; var_dump($drink); echo '</pre>'; ?> 通过上例我们发现,在关联数组当中也是可以不用array,直接在变量后面接括号。括号里面插入字符串下标,一样也声明成功。 后面插入变量的例子,只不过把字符串变成了变量,当然没有问题。 数组当中插入数组 数组可以插入整型、浮点、字符串,那么数组当中可不可以插入数组呢? 在学习数组的时候,我们定义了这样一组名词。 1.一维数组 数组里面没有其他数组,只有单纯的一些变量或者值。 2.二维数组 数组里面插入了单层的一个数组,或者多个数组 3.三维数组 在数组(A)里面插入了一个数组(B),在B数组里面又插入了一层级的数组(C),这种我们就称为三维数组 4.超过三维的,统统都叫多维数组。 注:索引数组和关联数组当中都可以再插入其他数组,让数组变为多维的。 我们来声明一个一维数组,只有一个维度。索引、关联均可,这个操作大家都很熟。 <?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>'; ?> 一维数组大家很熟悉,也不难,就是声明数组嘛。二维也不难,只是在数组里面再插一个或多个数组。二维学好了,多维就学好了。 <?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]; ?> 我们看看结果如下: 上例大家会发现,访问二维数组不过是按照之前的下标读取方式依次向下读取即可。 先写上变量,中括号写上family这个下标,再写上要访问元素的下标。 三维数组我们说了概念,那我们直接上手实验看看效果: <?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网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com