2012-10-16 63 views
2

嘗試處理數組並刪除較大數組集中的特定關聯數組。我現在的代碼可以在for循環中本地刪除特定部分,但不會影響原始的$cursor陣列。PHP未設置嵌套數組的部分

foreach($cursor as $key) { 

    foreach($key as $value => $k){ 

     if ($value == 'user'){ 

      unset($k['confinfo']); 
     } 
    } 
} 

這是一個全局變量問題嗎?如何取消原始變量?

+0

是頂層數組遊標嗎? –

回答

3

迭代原陣列上的參考:

foreach($cursor as &$key) // added & 

比,只要你做到這一點要注意這一點很重要,這是一個非常好主意遵循的unset循環摧毀參考:

foreach($cursor as &$key) { 
    // ... 
} 
unset($key); 

個人而言,我覺得這有點醜(參數在PHP的過程中),但這樣一來,你消除以後重用名稱$key並造成種種「INTE的風險休息「效果。

+0

5秒鐘之內擊敗我:) – gcochard

3

問題是你在循環中得到的$k不是$cursor包含的原始數組,它只是一個副本,一旦循環進入下一輪就會被銷燬。要真正從$cursor中刪除confinfo索引,您需要從$cursor開始,並且參考可以順利進行。

更換

unset($k['confinfo']); 

unset($cursor[$key][$value]['confinfo']); 

這不是短對方的回答,但它表現出更好的是怎麼回事,因此更容易調試,後來擴展。