PHP常用算法
//二维数组的按某字段来排序(从小到大排序) function number_array_sort_asc($array,$key_name){ $arr = array(); foreach ($array as $k) { $arr[] = $k[$key_name]; } array_multisort($arr, SORT_ASC, $array); return $array; }
//二维数组的按某字段来排序(从大到小排序) function number_array_sort_desc($array,$key_name){ $arr = array(); foreach ($array as $k) { $arr[] = $k[$key_name]; } array_multisort($arr, SORT_DESC, $array); return $array; }
//递归获取父元素列表(静态变量方法) function getParentEnum($id) { static $arr = []; array_unshift($arr, $id); //从数组头部压入一个元素 $pid = Db::name('basic_enum')->where('id', $id)->value('pid'); //tp5 数据库查询 if ($pid) { getParentEnum($pid); } return $arr; } getParentEnum($id);
//使用静态变量方法有个弊端,不能批量操作,静态变量中的数组会一直累加,不能置空,这时候需要使用全局变量方法
//递归获取父元素列表(全局变量方法) function getParentEnum($id) { array_unshift($GLOBALS['arr'], $id); $pid = Db::name('basic_enum')->where('id', $id)->value('pid'); //tp5 数据库查询 if ($pid) { getParentEnum($pid); } return $GLOBALS['arr']; } $GLOBALS['arr'] = []; getParentEnum($id);
//递归获取父元素列表(引用 方法) function getParentEnum($id, &$_res=[]) { array_unshift($_res, $id); $pid = Db::name('basic_enum')->where('id', $id)->value('pid'); //tp5 数据库查询 if ($pid) { getParentEnum($pid, $_res); } return $_res; } getParentEnum($id);
//递归获取子元素列表 function getChildEnum($id, &$_res=[]) { $ids = is_array($id) ? $id : [$id]; $_res = empty($_res) ? $ids : array_merge($_res,$ids); $list = Db::name('basic_enum')->where('pid','in',$id)->column('id'); if (!empty($list)){ $this->getChildCateId($list, $_res); } return $_res; } getChildEnum($id);