1

似乎很奇怪,我找不到答案,但这里是:

这个:

foreach ($stuffs as $stuffRow) {
    foreach ($stuffRow as $stuff) {
        if($stuff=== null){
            unset($stuff);
        }
    }
}

不管用。

我知道我不应该说“不工作”,但这就是我所拥有的。if 条件有效;我已经测试过了。但是,当我应用 unset 时,key=>value 仍然存在。

注意:PHP 5.3

提前谢谢了!

4

1 回答 1

1

虽然这可能有效(我从来没有这样做过,也没有测试过):

foreach ($stuffs as &$stuffRow) {
    foreach ($stuffRow as &$stuff) {
        if($stuff=== null){
            unset($stuff);
        }
    }
}

如果我没记错的话,在foreachs中通过引用传递不是一个好主意(但不记得为什么,可能在某个地方的php文档中,也许有人可以在评论中澄清,但我认为这是因为foreach适用于数组的副本并传递引用传递对副本的引用,而不是原始的,尽管这只是一个有根据的猜测)。相反,试试这个。

foreach ($stuffs as $key1=>$stuffRow) {
    foreach ($stuffRow as $key2=>$stuff) {
        if($stuff=== null){
            unset($stuffs[$key1][key2]);
        }
    }
}

顺便说一句,您的代码不起作用的原因是因为 foreach 循环遍历了数组的副本。

于 2012-11-18T02:42:28.173 回答