V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
narrowei
V2EX  ›  问与答

PHP unset 的问题(不是很傻的问题。。。。求指教)

  •  
  •   narrowei · 2015-10-21 15:32:20 +08:00 · 2501 次点击
    这是一个创建于 3350 天前的主题,其中的信息可能已经有所发展或是发生改变。
    小伙伴们快来看看,这个到底是啥原因
    以下是我的代码
    --------------------------------------------------
    $a = array();
    $a[16] = 41;
    $a[41] = 45;
    $b[41] = array(41=>array("size" => 41, "size_name" => "41 码"));
    $b[45] = array(45=>array("size" => 45, "size_name" => "45 码"));
    foreach($a as $k=>$v){
    unset($a[$k]);
    $a[$v]=$b[$v];
    }
    print_r($a);
    --------------------------------------------------
    得到的结果是
    --------------------------------------------------
    Array
    (
    [45] => Array
    (
    [45] => Array
    (
    [size] => 45
    [size_name] => 45 码
    )

    )

    )
    --------------------------------------------------
    但是在我认为的结果是长这样的
    --------------------------------------------------
    Array
    (
    [41] => Array
    (
    [41] => Array
    (
    [size] => 41
    [size_name] => 41 码
    )

    )

    [45] => Array
    (
    [45] => Array
    (
    [size] => 45
    [size_name] => 45 码
    )

    )

    )
    --------------------------------------------------
    只要把$a[41] 改成$a[42] 就能解决问题,虽然问题是解决了,但是不知道是什么原因造成的,所以来这里求解答。
    第 1 条附言  ·  2015-10-21 17:34:22 +08:00
    。。。。
    楼主脑子坏掉了,对不起各位 QuQ
    (竟然还不能删帖)
    7 条回复    2015-10-21 17:32:10 +08:00
    haiyang416
        1
    haiyang416  
       2015-10-21 15:43:30 +08:00
    貌似没错呀,你 foreach 的时候把 $a[41] unset 了,所以就只剩 $a[45] 了。
    sun2920989
        2
    sun2920989  
       2015-10-21 15:54:13 +08:00
    在 foreach 时请不要 unset 迭代的数组
    narrowei
        3
    narrowei  
    OP
       2015-10-21 16:22:10 +08:00
    @sun2920989 能不能具体点?:)
    narrowei
        4
    narrowei  
    OP
       2015-10-21 16:31:14 +08:00
    @haiyang416 value 还是可以得到的,不信你可以试试。
    a591826944
        5
    a591826944  
       2015-10-21 16:38:03 +08:00   ❤️ 1
    肯定的啊。。结果没问题啊。。 foreach unset 也没问题
    在第二次 循环的 时候 $a[41] 会被删掉啊

    LZ 标题党
    haiyang416
        6
    haiyang416  
       2015-10-21 17:10:20 +08:00
    @narrowei PHP 的 foreach 默认情况下是 by-value 的,你当然可以得到。
    narrowei
        7
    narrowei  
    OP
       2015-10-21 17:32:10 +08:00
    @a591826944 卧槽,懂了。我去默默地删帖了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1039 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:16 · PVG 02:16 · LAX 10:16 · JFK 13:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.