2014-01-13 25 views
-2

我正在編制索引程序。它的一切都很好,直到當我不得不索引索引文件。我想讓一個網站被管理員刪除,它的所有索引發佈列表都應該被刪除。請幫助我指出從多維數組中刪除數組的寫入方式。如何從多維數組中取消設置或從多維數組中刪除數組當您只知道子項的鍵而不是父項時

給出一個數組如下,3是數據庫中索引網站的id。管理員刪除該網站。我也希望能夠從我的索引中刪除其發佈引用。

Array 
(
[mr] => Array 
    (
     [3] => Array 
      (
       [frequency] => 3 
       [position] => Array 
        (
         [0] => 16 
         [1] => 94 
         [2] => 110 
        ) 

      ) 

    ) 

[smith] => Array 
    (
     [3] => Array 
      (
       [frequency] => 3 
       [position] => Array 
        (
         [0] => 17 
         [1] => 95 
         [2] => 111 
        ) 

      ) 

    ) 
) 

讓我們調用該數組$ index。 某人如何解除或刪除所有有3個鍵的數組,這意味着我將留下一個這樣的數組。

Array 
(
[mr] => Array 
(

) 

[smith] => Array 
(

) 
) 

回答

0

很簡單。

循環遍歷第一級數組,然後遍歷每個第二級數組。如果第二級密鑰爲3,則將第一級數組中的值設置爲空數組。

foreach($array as $key => $val) { 
    foreach($val as $key2 => $val2) { 
     if($key2 == 3) { unset($array[$key][$key2]); } 
    } 
} 

針對以下評論進行了編輯。

+0

如果2nd level有更多的數組會發生什麼?你將全部解除它們。更好的解決方案是用'unset($ array [$ key] [$ key2]);'替換'$ array [$ key] = array();''。 –

+0

OP是什麼請求。所以沒有必要downvote! – Ryan

+0

在第二次查看問題時,我推測**每個第二個索引只存在一個數組。我改變了我的代碼。 – Ryan