这两天做一个缓存的内容处理的东东,缓存的内容是一个多维数组,而对缓存内容不能每次读写,这样的成本很高,我们是通过数组的key来对数组进行删除和更新。
对多维数组的处理,php来处理的话用递归是最普遍的方法。但是对于比较大的数组来说效率就比较低。
最后我们是应用引用和动态变量来对多维数组进行处理的。下面是实例
<?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; } ?>
在这里记录一下,以便以后记得。
|