• 首页课程PHP趣味闯关课堂list、each函数遍历数组

    list、each函数遍历数组

    目录列表

    list函数

    我们先来讲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 />';
    // 结果
    /*
    $one----张三
    $two----李四
    $three----王五
    */
    ?>

    分析结果:

    7Z2DBZTF4OLZRBQJLE1$Y7E.png

    结论:

    • .将下标为0的张三赋值给了$one

    • 将下标为1的李四赋值给了$two

    • 将下标为2的王五赋值给了$three

    因此,我们知道了list的功能就是从左到右,一一对应索引数组从0开始的下标值。

    请严格记住:索引数组的一一对应原则。list第一个变量对应的是下标为0的数组元素,下标为1的对应的是list里面的第二个数组元素,对应的变量或数组值为空都会报错。

    例如:

    <?php
    list( ,  , $three) = array('张三' ,'李四' ,'王五');
    echo '$one----'.$one.'<br />';
    echo '$two----'.$two.'<br />';
    echo '$three----'.$three.'<br />';
    // 报错。
    ?>

    填空,输出我的个人详细。

    <?php ($name, $age, $sex) array('Lge' ,'20' ,'男'); echo '我的名字叫:'..'<br />'; echo '我的年龄是:'.$age.'<br />'; echo '我的性别是:'.$sex.'<br />'; ?>

    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 结果:
    /*
    array(4) {
      [1]=>
      string(15) "穿黑衣服的"
      ["value"]=>
      string(15) "穿黑衣服的"
      [0]=>
      string(3) "gao"
      ["key"]=>
      string(3) "gao"
    }
    */
    ?>

    总结:

    • 读取了$kongjie中的第一个元素,将第一个元素('gao'=>'穿黑衣服的')分解开了。

    • 分解后第一个元素变成了一个新数组。

    • 在新数组里面,将原值(穿黑衣服的)放了索引下标1里面,同时放到了关联下标value里面。

    • 在新数组里面,将原键(gao),放到了关联下标key里面,放到了索引下标0里面。

    如图所示:

    JKQC)R)4E]@BNIEHY0Z`{X8.png

    这样我们一下子就看明白了。

    接下来我们说说each的另外一个特性。读一次,向后移动一个元素。

    <?php
    
    //定义一个变量叫$kongjie(空姐)
    $kongjie=[
       'gao'=>'穿黑衣服的',
       'shou'=>'退特别长特别细',
       'mei'=>'好白',
       ];
    //第一次each
    $data = each($kongjie);
    echo '<pre>';
    var_dump($data);
    echo '-----华丽丽分割线------<br />';
    //第2次each
    $data = each($kongjie);
    var_dump($data);
    echo '-----华丽丽分割线------<br />';
    //第3次each【执行到了最后一个元素了】
    $data = each($kongjie);
    var_dump($data);
    echo '</pre>';
    
    ?>

    结果:

    /*
    array(4) {
      [1]=>
      string(15) "穿黑衣服的"
      ["value"]=>
      string(15) "穿黑衣服的"
      [0]=>
      string(3) "gao"
      ["key"]=>
      string(3) "gao"
    }
    -----华丽丽分割线------
    array(4) {
      [1]=>
      string(21) "退特别长特别细"
      ["value"]=>
      string(21) "退特别长特别细"
      [0]=>
      string(4) "shou"
      ["key"]=>
      string(4) "shou"
    }
    -----华丽丽分割线------
    array(4) {
      [1]=>
      string(6) "好白"
      ["value"]=>
      string(6) "好白"
      [0]=>
      string(3) "mei"
      ["key"]=>
      string(3) "mei"
    }
    */

    总结:

    • 读一次向后移动一次【可以想象有一个记录的箭头在移动】,将其中的每个元素拆解成一个新数组

    • 读取到最后,没有可操作的元素了,就会返回了false,不想的同学可以试试哦。


    填写正确答案!

    <?php $student=[ 'xiaoming'=>'17', 'xiaoliang'=>'18', ]; $data = each($student); var_dump($data); ?>// [1] => "" [0] => ""

    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 />';
    // 结果:
    /*
    gao-----穿黑衣服的
    */
    
    ?>

    总结:

    • each 把变量拆成了4个元素

    • 而list把0 =>gao 赋值给了变量$key

    • list把1 => 穿黑衣服的 赋值给了变量 $value

    each到最后会返回false,因此我可以用布尔型循环while来配合完成数组的循环,下面我们看看使用循环的例子:

    <?php
    
    //定义一个变量叫$kongjie(空姐)
    $kongjie=[
       'gao'=>'穿黑衣服的',
       'shou'=>'退特别长特别细',
       'mei'=>'好白',
       ];
    while(list($key,$value) = each($kongjie)){
       echo $key. '-----' .$value .'<br />';
    }
    // 结果:
    
    /*
    gao-----穿黑衣服的
    shou-----退特别长特别细
    mei-----好白
    */
    
    ?>

    总结:

    • 循环一次,执行一次each,执行代码,然后向后移动一个元素

    • 执行到最后返回fasle,因此停止执行。

    • 可以通过each和list配合实现foreach一样的效果。

    作为了解章节,不过在实际开发中可能也会用到哦!建议大家课后可以多多练习练习!

    将下列排序修改正确。

    • list($key,$value) = each($admin);
    • ];
    • $admin=[
    • echo '我的名字:'.$key.'我的年龄:'.$value .'<br />';
    • 'lge'=>'20'

    PHP中文网