• PHP中关于foreach的笔试题


    1,php与C++的不同之处是PHP中变量没有局部作用域,只有函数作用域和全局作用域。如下函数,在php中,$name的作用域是函数test();在C++中$name的作用域是for循环体,for循环体结束,$name失效。以上代码,在php正常运行,在C++中报错。

    <?php
    function test(){
        for($i = 0; $i < 3; $i++){
            $name = 'xiaowang';
        }
        echo $name;
    }
    ?>
    

    2, 实例

    <?php
    $a = array('a','b','c');
    foreach($a as &$v){
        
    }
    
    foreach($a as $v){
        
    }
    var_dump($a);

    结果应该打印出:

    array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> &string(1) "b" }

    解析:1,先了解下foreach循环,foreach($a as $b),

    (1)在第一次循环时候,定义一个变量$b,并将$a[0]的值赋给$b,$b=$a[0];

    (2)在第二次循环时候,将$a[1]的值赋给$b,$b=$a[1];

    (3)在第三次循环时候,将$a[2]的值赋给$b,$b=$a[2];

    2,那么以上程序:

    foreach($a as &$b),

    (1)在第一次循环时候,定义引用$b ,并为其赋值,使其成为$a[0]的别名,$b= &$a[0];

    (2)在第二次循环时候,为引用$b赋值,使其成为$a[1]的别名,$b=&$a[1];

    (3)在第三次循环时候,为引用$b赋值,使其成为$a[2]的别名,$b=&$a[2];

    循环结束后,此时$b是$a[2]的别名,可以这么理解,变量$b和变量$a[2]共用同一个内存区域。

    foreach($a as $b)

    (1)在第一次循环时候,将$a[0]的值赋值给$b,即赋值给$a[2],$a[2] = $a[0],此时数组 a b a;

    (2)在第二次循环时候,将$a[1]的值赋值给$b,即赋值给$a[2],$a[2] = $a[1],此时数组 a b b;

    (3)在第三次循环时候,将$a[2]的值赋值给$b,即赋值给$a[2],$a[2] = $a[2],此时数组 a b b;

  • 相关阅读:
    微信小程序UI组件、开发框架、实用库...
    关于Web中的图标使用问题
    通过jQuery Ajax使用FormData对象上传文件
    css3 动画demo
    css知识汇总
    git初体验(三)git分支
    js数组去重的三种常用方法总结
    JavaScript继承方式详解
    面试题连接收集
    城市列表的实例
  • 原文地址:https://www.cnblogs.com/usa007lhy/p/5439240.html
Copyright © 2020-2023  润新知