学会使用PHP的List、each函数及配合

在之前的文章中给大家带来了《如何搞定PHP超级全局变量(整理分享)》,这篇文章中详细的介绍了PHP中超级全局变量的相关知识,本篇文章我们一起来看一看PHP中的list、each函数遍历数组的相关知识,希望能够帮助到大家!

list函数与each函数是我们在日常生活中经常能够用到的函数,那么这两个函数应该怎么使用?两者之间有什么特点?他们又是怎么配合使用的?这两个函数是比较有意思的数组函数,函数学习起来并不难,那我们一起来看看吧。

list函数

list函数它的功能是:能够将索引数组下标为0的对应为变量1,下标为1的对应变量2...list函数能够将数组的元素变成变量使用。

它的基本语法是:

list(变量1,变量2...)

示例如下:

<?php
list($a , $b , $c, $d) = array('好好学习' ,'天天向上' ,'福如东海','寿比南山');
echo '$a----'.$a.'<br />';
echo '$b----'.$b.'<br />';
echo '$c----'.$c.'<br />';
echo '$d----'.$d.'<br />';
?>

输出结果:

1018.01.png

由此可以看出,数组中“好好学习”的下标为0,就对应了list函数中的$a;也可以理解为,数组中变量为0的“好好学习”赋值给了list函数中的$a;以此类推。list就是从左到右,一一对应索引数组从0开始的下标值。

同时还有一种情况,示例如下:

<?php
list( ,  , $c, $d) = array('好好学习' ,'天天向上' ,'福如东海','寿比南山');
echo '$a----'.$a.'<br />';
echo '$b----'.$b.'<br />';
echo '$c----'.$c.'<br />';
echo '$d----'.$d.'<br />';
?>

输出结果:

1018.02.png

在上述示例中,下标为2的福如东海赋值给了$c,list中的前两个位置留了空,按照一一对应,所以好好学习和天天向上没有变量与之对应。所以list函数严格遵守一一对应原则,也就是list函数的地一个变量对应的是数组中下标为0的元素,下标为1的对应的是list函数中的第二个变量,以此类推。

当然还有一种情况,示例如下:

<?php
list($a , $b , $c, $d) = array(2=>'好好学习' ,'天天向上' ,'福如东海','寿比南山');
echo '$a----'.$a.'<br />';
echo '$b----'.$b.'<br />';
echo '$c----'.$c.'<br />';
echo '$d----'.$d.'<br />';
?>

输出结果:

1018.03.png

在上述示例中,数组的下标因为键名直接从2开始,所以数组元素中没有下标为0和1的元素,所以变量a和b就没有对应的值。同时,list函数中只写了四个变量,数组元素中的下标为4和5的福如东海、寿比南山也就没有了对应的变量。

each函数

each函数的功能是传入一个数组。它会将其中的一个元素拆分为一个新的数组。每次执行这样操作一个元素。执行一次先后移动一次,同样的方式操作下一个数组元素。执行到最后,返回false。

示例如下:

<?php
$a=[
   'aaa'=>'好好学习',
   'bbb'=>'天天向上',
   'ccc'=>'福如东海',
   'ddd'=>'寿比南山'
   ];
//第一次each
$data = each($a);
echo '<pre>';
var_dump($data);
echo '</pre>';
?>

输出结果:

1018.04.png

由上述示例可以看出运行第一次each函数,将数组元素中的第一个元素也就是aaa=>好好学习拆为一个新的数组。可以理解为,each函数读取了第一个元素,将第一个元素分解开了,在新数组里面,将原值(好好学习)放了索引下标1里面,同时放到了关联下标value里面,将原键(aaa),放到了关联下标key里面,放到了索引下标0里面。

这是运行了一次的结果,那我们再来看一下多运行几次,示例如下:

<?php
$a=[
   'aaa'=>'好好学习',
   'bbb'=>'天天向上',
   'ccc'=>'福如东海'
   ];
//第一次each
$data = each($a);
echo '<pre>';
var_dump($data);
echo '</pre>';
//第二次each
$data = each($a);
echo '<pre>';
var_dump($data);
echo '</pre>';
//第三次each
$data = each($a);
echo '<pre>';
var_dump($data);
echo '</pre>';
//第四次each
$data = each($a);
echo '<pre>';
var_dump($data);
echo '</pre>';
?>

输出结果:

1018.06.png

由此可以看出,每读取一次就会向后移动一次,将其中的每个元素拆分为新的数组,当读取到最后的时候,没有可操作的元素了,就会返回了false。

list和each的配合

我们知道了list的功能,也了解了each的功能,那么两者结合起来使用的话,会碰出什么不一样的火花呢?

我们通过示例来看一下:

<?php
$a=[
   'aaa'=>'好好学习',
   'bbb'=>'天天向上',
   'ccc'=>'福如东海',
   ];
list($key,$value) = each($a);
echo $key. '-----' .$value .'<br />';
?>

输出结果:

1018.07.png

在上述实例中,each把元素拆了,然后list把0 =>aaa 赋值给了变量$key把1 => 好好学习 赋值给了变量 $value。通过我们之前讲到的while循环语句的配合,我们可以得到下面的示例:

<?php
$a=[
   'aaa'=>'好好学习',
   'bbb'=>'天天向上',
   'ccc'=>'福如东海',
   ];
   while(list($key,$value) = each($a)){
    echo $key. '-----' .$value .'<br />';
 
 }
?>

输出结果:

1018.08.png

由上述结果可以看出,每循环一次,执行一次each,然后向后移动一个元素,执行到最后返回的是flash停止循环。

推荐学习:《PHP视频教程》