来源:自学PHP网 时间:2018-02-09 16:45 作者: 阅读:次
[导读] PHP中文网教程为您提供《php入门教程之一周学会PHP》之 php list、each函数遍历数组 章节的在线实战教程供您学习,你可以进行笔记、提问、讨论和资料下载...
我们来研究两个比较有意思的数组函数。这两个函数学起来不难。但是,有些同学会遇到一点点小困难。困难在于,找到list函数和each函数的操作特点。 list函数 我们先来讲list函数: list ( mixed $变量1 [, mixed $变量n ] ) 它的功能:将索引数组下标为0的对应我变量1,下标1的对应变量2,依此类推。 我们来通过实验来看一下: <?php list($one , $two , $three) = array('张三' ,'李四' ,'王五'); //再次声明:单引号不结释变量,所以输出的是字符串$one echo '$one----'.$one.'<br />'; echo '$two----'.$two.'<br />'; echo '$three----'.$three.'<br />'; ?> 我们来看一下实验结果: 分析结果如图: 结论: 1.将下标为0的张三赋值给了$one 2.将下标为1的李四赋值给了$two 3.将下标为2的王五赋值给了$three 因此,我们知道了list的功能就是从左到右,一一对应索引数组从0开始的下标值。 list的另外一种用法: <?php list( , , $three) = array('张三' ,'李四' ,'王五'); echo '$one----'.$one.'<br />'; echo '$two----'.$two.'<br />'; echo '$three----'.$three.'<br />'; ?> 运行结果: 结论: 1.list当中的第一、二个放变量的地方留空,我只写了$three。 2.按照一一对应原则,张三和李四没有变量可以对应。 3.所以只有王五有变量对应 请严格记住:索引数组的一一对应原则。list第一个变量对应的是下标为0的数组元素,下标为1的对应的是list里面的第二个数组元素。 请猜猜下面的结果是多少? 为什么? <?php list($one, $two, $three) = array(2 => '张三', '李四', '王五'); echo '$one----' . $one . '<br />'; echo '$two----' . $two . '<br />'; echo '$three----' . $three . '<br />'; ?> 运行结果如下图: 总结: 1.因为是一一对应原则,$one找不到下标为0的数组元素,$two找不到下标为1的数组元素,只有$three找到了下标为2的数组元素 3.在list($one, $two, $three),我只写了三个变量。对应完成,无需再对应后面的变量了,丢弃李四和王五。 each函数 each 函数的规律性上面就更有特点了,并且比较有趣。 array each ( array &$array ) 功能:传入一个数组。它会将其中的一个元素拆为个新数组。每次执行这样操作一个元素。执行一次先后移动一次,同样的方式操作下一个数组元素。执行到最后,返回false。 我们先来看看each是怎么操作的数组元素。 <?php //定义一个变量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特别长特别细', 'mei'=>'好白', 'pl'=>'五官端正', 'type'=>'那就是女神', '我是吊丝不敢跟女神搭讪' ]; //第一次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; ?> 我们来看看第一次执行each的结果: 总结: 1分解后第一个元素变成了一个新数组。 2在新数组里面,将原值(穿黑衣服的)放了索引下标1里面,同时放到了关联下标value里面。 3在新数组里面,将原键(gao),放到了关联下标key里面,放到了索引下标0里面。 我们用图来表示: 这样我们一下子就看明白了。 接下来我们说说each的另外一个特性。读一次,向后移动一个元素。 <?php //定义一个变量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特别长特别细', 'mei'=>'好白', ]; //第一次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; echo '-----华丽丽分割线------<br />'; //第2次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; echo '-----华丽丽分割线------<br />'; //第3次each【执行到了最后一个元素了】 $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; echo '-----华丽丽分割线------<br />'; //第4次【此时,后面已没有可操作的元素了,看返回什么】 $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; echo '-----华丽丽分割线------<br />'; ?> 执行结果: 总结: 1.读一次向后移动一次【可以想象有一个记录的箭头在移动】,将其中的每个元素拆解成一个新数组 2.读取到最后,没有可操作的元素了,所以返回了false。 list 和each 配合 我们知道了list的特性,也知道了each的特性。那list是不是可以和each配合起来一起来完成一些工作呢? list($key,$value) = each($array); 我们来看之前说到的这个图: 而list中的第一个变量会去找索引下面0的元素去赋值,第二个变量会找索引下标为1的元素对变量赋值。 我们来看看下面例子: <?php //定义一个变量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'腿特别长特别细', 'mei'=>'好白', ]; list($key,$value) = each($kongjie); echo $key. '-----' .$value .'<br />'; ?> 运行结果如下: 总结: 1.each 把变量拆成了4个元素 2.而list把0 =>gao 赋值给了变量$key 3.list把1 => 穿黑衣服的 赋值给了变量 $value each到最后会返回false,因此我可以用布尔型循环while来配合完成数组的循环。 把上面的代码,轻轻一改就实现了如下效果: <?php //定义一个变量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特别长特别细', 'mei'=>'好白', ]; while(list($key,$value) = each($kongjie)){ echo $key. '-----' .$value .'<br />'; } ?> 执行演示: 总结: 1.循环一次,执行一次each,执行代码,然后向后移动一个元素 2.执行到最后返回fasle,因此停止执行。 3.可以通过each和list配合实现foreach一样的效果。 作业: 使用list和each配合,将如下数组: <?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); ?> 遍历显示出来,效果如下: |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com