zoukankan      html  css  js  c++  java
  • PHP中foreach循环传值问题

    首先看一段代码:

    <?php
    $a=array('ab','cd','ef');
    $count=3;
    foreach($a as $key=>$value){
        $value='abcdef';
    }
    foreach($a as $key=>$value){
        var_dump($value);
    }
    ?>
    

    输出结果是什么呢?:

    string(2) "ab"
    string(2) "cd"
    string(2) "ef"

    我明明在foreach循环中对数组的value进行了改变,但是输出为什么没有变化呢?

    接下来我们来一个可以让他发生变化的循环操作:

    <?php
    $a=array('ab','cd','ef');
    $count=3;
    foreach($a as $key=>&$value){
        $value='abcdef';
    }
    foreach($a as $key=>$value){
        var_dump($value);
    }
    ?>
    

    没错,和c++中传递引用简直一模一样。我们来看一下输出结果:

    string(6) "abcdef"
    string(6) "abcdef"
    string(6) "abcdef"

    总结:

      在foreach循环中,他遍历的实际上是原来数组的一个复制,你对他的任何操作都是对数组的复制进行的操作,也就是说不会对原数组造成任何影响。

    那么如何造成影响呢?我认为至少有两种方案,已给出一种,即使用原数组的引用。还有一种方式就是在foreach循环中用原数组进行操作。就是这

    样:a[$key]='fsdada';

  • 相关阅读:
    Longest Common Prefix
    Roman to Integer
    Intger to Roman
    Container With Most Water
    Regular Expression Matching
    atoi
    Rotate List
    54. Search a 2D Matrix && Climbing Stairs (Easy)
    53. Minimum Window Substring
    52. Sort Colors && Combinations
  • 原文地址:https://www.cnblogs.com/guanking19/p/5366516.html
Copyright © 2011-2022 走看看