$val) { if ($val[$pid] == $root) { unset($list[$key]); if (!empty($list)) { $children = list_tree($list, $pk, $pid, $child, $val[$pk]); $val[$child] = $children; } array_push($tree, $val); } } return $tree; } function make_tree($list, $pk = 'id', $pid = 'pid', $child = 'child', $root = 0) { $tree=array(); foreach ($list as $key => $val) { if ($val[$pid]==$root) { unset($list[$key]); if (!empty($list)) { $child = make_tree($list, $pk, $pid, $child, $val[$pk]); if (!empty($child)) { $val['child']=$child; } else { $val['child']= array(); } } $tree[]=$val; } } return $tree; } /** * 获取指定月份的第一天开始和最后一天结束的时间戳 * * @param int $y 年份 $m 月份 * @return array(本月开始时间,本月结束时间) */ function month_frist_and_last_day($y = "", $m = ""){ if ($y == "") $y = date("Y"); if ($m == "") $m = date("m"); $m = sprintf("%02d", intval($m)); $y = str_pad(intval($y), 4, "0", STR_PAD_RIGHT); $m>12 || $m<1 ? $m=1 : $m=$m; $firstday = strtotime($y . $m . "01000000"); $firstdaystr = date("Y-m-01", $firstday); $lastday = strtotime(date('Y-m-d 23:59:59', strtotime("$firstdaystr +1 month -1 day"))); return [ "firstday" => $firstday, "lastday" => $lastday]; } /** * 生成随机字符串 */ function generate_stochastic_string($length = 16) { $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyz'; return substr(str_shuffle($permitted_chars), 0, $length); }