簡體   English   中英

通過嵌套的foreach在多維數組中取消設置鍵

[英]unset key in multidimensional array via nested foreaches

似乎很奇怪,我無法找到答案,但是這里有:

這個:

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

不管用。

我知道我不應該說“不起作用”,但這就是我所擁有的。 如果條件有效; 我已經測試過了 但是,當我應用unset時,key => value仍然存在。

注意:PHP 5.3

提前謝謝了!

盡管這可能會起作用(我從來沒有這樣做,也沒有對其進行測試):

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

如果我沒記錯的話,按引用傳遞在foreach中不是一個好主意(但不記得為什么,可能已經在php doc中的某個地方,也許有人可以在注釋中進行澄清,但是我認為這是因為foreach可以在a數組的副本並傳遞引用,但會將引用傳遞給副本,而不是原始副本,盡管這只是有根據的猜測)。 相反,請嘗試此。

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

您的代碼無法順便工作的原因是因為foreach循環在數組的COPY上進行迭代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM