• 首页课程PHP趣味闯关课堂foreach遍历关联数组

    foreach遍历关联数组

    目录列表

    foreach遍历关联数组

    foreach的基本语法:

    我们通过上一章的内容学会了for循环遍历连续下标的索引数组。可是,我们发现我们遍历不了关联数组,也遍历不了下标不连续的索引数组。

    那我们其实在学循环的时候,有一个循环是专门用来循环数组的。这个循环的基本语法就是foreach基本语法。

    语法格式:

    foreach( 要循环的数组变量 as [键变量 =>] 值变量){
    //循环的结构体
    }

    以下foreach语法正确的有哪些?

    遍历关联数组

    数组中的数据是另一个数组我们该怎么遍历呢?我们来做一个实验:

    这是一个固定用法,将要循环的数组放进去。

    as 是一个固定的关键字。

    后面的键变量是可选的,随意定义一个变量,每次循环的时候,foreach这个语法会把键取出来赋值到键变量里面

    后面的值变量是必填的。每次循环的时候,会把值放到值变量里面。

    我们下面用代码来举例子,加强对这个语法的理解。

    <?php
    $data = [
           'fj' => '凤姐',
           'fr' => '芙蓉',
       ];
    foreach($data  as $key => $value){
           echo $key . '-------' . $value . '<br />';
    }
    // 结果 
    /*
    fj-------凤姐
    fr-------芙蓉
    */
    ?>

    通过上面的运行结果我们得出下面的结果:

    • 每次循环的时候,把下标赋值给了变量$key,把值的变量赋值给了变量$value

    • 循环一次读一次键和值。如上例中,读完“凤姐”再读取“芙蓉”,读到最后,发现没有可以读取的数组元素后,停止循环遍历数据。

    注意:$key 和$value并不是变量名必须得为这两个名字。你命名为其他的也可以,如 $kai => $wen是一样的。 你要清楚键赋值给了哪个变量,值赋值给了另外的哪个变量。

    foreach遍历索引数组和遍历关联数组类似,这里不做验证。感兴趣的可以自己试试。

    填空,遍历出数组里的所有学生年龄,并且一一对应。

    <?php $boy = [ 'xiaoming' => 18,'xiaoliang' => 19, ]; foreach($boy $k $v){echo $k.'年龄是'.. '<br />'; } ?>

    遍历多维数组

    数组中的数据是另一个数组我们该怎么遍历呢?我们来做一个实验:

    <?php
    $data = array(
           0 => array(
               '中国' => 'china',
               '美国' => 'usa',
               '德国' => ' Germany',
           ),
           1 => array(
               '湖北' => 'hubei',
               '河北' => 'hebei',
               '山东' => 'shandong',
               '山西' => 'sanxi',
           ),
    );
    //注:我们在使用foreach循环时,第一次循环将键为0和键为1的两个数组赋值给一个变量($value)。然后,再套一个循环遍历这个$value变量,$value中的值取出来,赋值给$k和$v。
    foreach($data as $value){
       //第一次循环把国家的数组赋值给了$value
       //第二次循环把中国的省份的数组又赋值给了$value
       //因此,我在循环的时候把$value再遍历一次
       foreach($value as $k => $v){
               echo $k . '-----' . $v .'<br />';
       }
       //为了看的更清晰,我在中间加上华丽丽的分割线方便你来分析
       echo '----------分割线-----------<br />';
    }
    // 结果
    /*
    中国-----china
    美国-----usa
    德国----- Germany
    ----------分割线-----------
    湖北-----hubei
    河北-----hebei
    山东-----shandong
    山西-----sanxi
    ----------分割线-----------
    */
    ?>

    总结:

    • 第一次循环的时候,将数组赋值给了$value,然后用foreach循环$value。将二维的子数组中的键给到$k,值赋值给变量$v。

    • 第一次循环退出子数组的循环,执行后续代码显示分割线。

    • 依此类推,第二次循环也是这样。

    在实际开发中对多维数组还是挺重要的,自己多多练习遍历多维数组。

    PHP中文网