這兩天做一個(gè)緩存的內(nèi)容處理的東東,,緩存的內(nèi)容是一個(gè)多維數(shù)組,,而對(duì)緩存內(nèi)容不能每次讀寫,這樣的成本很高,,我們是通過(guò)數(shù)組的key來(lái)對(duì)數(shù)組進(jìn)行刪除和更新,。
對(duì)多維數(shù)組的處理,php來(lái)處理的話用遞歸是最普遍的方法,。但是對(duì)于比較大的數(shù)組來(lái)說(shuō)效率就比較低,。
最后我們是應(yīng)用引用和動(dòng)態(tài)變量來(lái)對(duì)多維數(shù)組進(jìn)行處理的。下面是實(shí)例
<?php $array = array( 'admin' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee')) ); $keys = array('admin', 'c', 'e'); function array_remove_key($array, $keys) { $num = count($keys); $num_last = $num - 1; $this_array_0 = &$array; $last_key = $keys[$num_last]; for ($i = 0; $i < $num_last; $i++) { $this_key = $keys[$i]; $this_var_name = 'this_array_' . $i; $next_var_name = 'this_array_' . ($i + 1); if (!array_key_exists($this_key, $$this_var_name)) { break; } $$next_var_name = &${$this_var_name}[$this_key]; } unset(${$next_var_name}[$last_key]); return $array; } ?>
在這里記錄一下,,以便以后記得,。
|