我有這是基於下面的陣列上的嵌套樹結構:(?遞歸)遍歷多維數組,並刪除某些鍵
Array ( [1] => Array ( [id] => 1 [parent] => 0 [name] => Startpage [uri] => 125 [basename] => index.php [child] => ) [23] => Array ( [id] => 23 [parent] => 0 [name] => Events [uri] => 0 [basename] => [child] => Array ( [24] => Array ( [id] => 24 [parent] => 23 [name] => Public news [uri] => 0 [basename] => [child] => Array ( [27] => Array ( [id] => 27 [parent] => 24 [name] => Add [uri] => 100 [basename] => news.public.add.php [child] => ) [28] => Array ( [id] => 28 [parent] => 24 [name] => Overview [uri] => 101 [basename] => news.public.overview.php [child] => ) ) ) [25] => Array ( [id] => 25 [parent] => 23 [name] => Private news [uri] => 0 [basename] => [child] => Array ( [29] => Array ( [id] => 29 [parent] => 25 [name] => Add [uri] => 67 [basename] => news.private.add.php [child] => ) [30] => Array ( [id] => 30 [parent] => 25 [name] => Overview [uri] => 68 [basename] => news.private.overview.php [child] => ) ) ) [26] => Array ( [id] => 26 [parent] => 23 [name] => Calendar [uri] => 0 [basename] => [child] => Array ( [31] => Array ( [id] => 31 [parent] => 26 [name] => Add [uri] => 69 [basename] => news.event.add.php [child] => ) [32] => Array ( [id] => 32 [parent] => 26 [name] => Overview [uri] => 70 [basename] => news.event.overview.php [child] => ) ) ) ) ) )
我正在尋找一個函數來遍歷該數組並刪除一些鍵。
我我的系統可以讓用戶對某些功能/頁,如果我拒絕訪問整個「塊」,「活動」,陣列將是這樣的:
array ( 1 => array ( 'id' => '1', 'parent' => '0', 'name' => 'Start page', 'uri' => '125', 'basename' => 'index.php', 'child' => '', ), 23 => array ( 'id' => '23', 'parent' => '0', 'name' => 'Events', 'uri' => '0', 'basename' => NULL, 'child' => array ( 24 => array ( 'id' => '24', 'parent' => '23', 'name' => 'Public news', 'uri' => '0', 'basename' => NULL, 'child' => '', ), 25 => array ( 'id' => '25', 'parent' => '23', 'name' => 'Private news', 'uri' => '0', 'basename' => NULL, 'child' => '', ), 26 => array ( 'id' => '26', 'parent' => '23', 'name' => 'Calendar', 'uri' => '0', 'basename' => NULL, 'child' => '', ), ), ) )
正如你可以看到上面,整個「塊」「事件」現在是無用的,因爲沒有與每個選項關聯的頁面。所以我需要找到所有的「鍵」,其中「basename」爲空,並且其中子不是數組或數組是空的,並將其刪除。 我發現搜索網站時,此功能:
function searchAndDestroy(&$a, $key, $val){
foreach($a as $k => &$v){
if(is_array($v)){
$r = searchAndDestroy($v, $key, $val);
if($r) {
unset($a[$k]);
}
} elseif ($key == $k && $val == $v) {
return true;
}
}
return false;
}
它可以用來刪除一個鍵上任何地方的陣中,但只設在一兩件事,比如刪除其中「父」等於「23的所有鍵」。但我需要找到並刪除(取消設置)所有的鍵,其中「basename」爲空,並且其中child不是數組或數組爲空。 任何人都可以幫助我,並可能調整上面的功能?
謝謝
最後他停止了寫作:-) – 2010-04-10 10:49:34
你可以用'var_export'而不是'print_r'來提供數組結構嗎? – Gordon 2010-04-10 10:56:12
@Parth你需要用鼠標滾輪加快速度。 – zaf 2010-04-10 13:36:29