首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用传递失败?

引用传递失败?
EN

Stack Overflow用户
提问于 2013-03-12 08:40:23
回答 1查看 38关注 0票数 0

这是怎么回事?

我想知道为什么!

所以我问你!

谢谢!

代码语言:javascript
复制
<?php

$arr = array('a','b','c','d',array(1,2,3,4,5));

var_dump($arr);
foreach($arr as &$value){
    if($value == 'c'){
        unset($value);
    }
    if(is_array($value)){
        foreach ($value as $key => &$v) {
            if($v == 2){
                unset($v);
            }
        }
    }
}
var_dump($arr);

?>

这是结果:

代码语言:javascript
复制
array (size=5)
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'c' (length=1)
  3 => string 'd' (length=1)
  4 => 
    array (size=5)
      0 => int 1
      1 => int 2
      2 => int 3
      3 => int 4
      4 => int 5
array (size=5)
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'c' (length=1)
  3 => string 'd' (length=1)
  4 => &
    array (size=5)
      0 => int 1
      1 => int 2
      2 => int 3
      3 => int 4
      4 => &int 5
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-12 08:48:32

如果你想从你正在迭代的数组中删除一项--你需要unset数组的键,而不是它的值:

代码语言:javascript
复制
foreach($arr as $key => $value){
    if (...) {
        unset($arr[$key]);
    }
}

您当前的解决方案并不像您预期的那样工作,因为任何特定迭代上的&$value都是对存储在$arr中的同一变量的另一个引用。因此,您取消设置的是本地变量,而不是原始变量。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15351287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档