'fourthPrize'] = axz_drawWinners($userIds, $fourthPrizeCount); } return $result; } // 新增:带指定UID逻辑的抽奖函数(核心修改) function axz_drawLottery_new($userIds, $item, $jp1_sl=0,$jp2_sl=0,$jp3_sl=0,$jp4_sl=0) { $result = array(); // 转一维数组(兼容db_sql_find的结果格式) $uidPool = array_column($userIds, 'uid'); $totalUsers = count($uidPool); $firstPrizeCount = (int)$jp1_sl; $secondPrizeCount = (int)$jp2_sl; $thirdPrizeCount = (int)$jp3_sl; $fourthPrizeCount = (int)$jp4_sl; // 检查总数量是否超过用户池(保留你原来的校验逻辑) if ($firstPrizeCount + $secondPrizeCount + $thirdPrizeCount + $fourthPrizeCount > $totalUsers) { return false; } // 封装:指定UID优先,无则随机 function drawPrizeWithSpecify(&$pool, $specifyUidStr, $count) { $winners = []; if($count <= 0) return $winners; // 第一步:处理指定UID if(!empty($specifyUidStr)) { $specifyUids = explode(',', trim($specifyUidStr)); foreach($specifyUids as $uid) { $uid = intval(trim($uid)); if($uid > 0 && count($winners) < $count && in_array($uid, $pool)) { $winners[] = ['uid' => $uid]; // 从池子移除,避免重复中奖 $idx = array_search($uid, $pool); if($idx !== false) unset($pool[$idx]); $pool = array_values($pool); // 重置索引 } } } // 第二步:指定UID不足,随机兜底(复用你原来的axz_drawWinners逻辑) $needRand = $count - count($winners); if($needRand > 0 && !empty($pool)) { $randWinners = axz_drawWinners($pool, $needRand); foreach($randWinners as $win) { $winners[] = ['uid' => $win['uid'] ?? $win]; // 兼容格式 } } return $winners; } // 执行各奖项抽奖(读取指定UID字段) $result['firstPrize'] = drawPrizeWithSpecify($uidPool, $item['jp1_uid'] ?? '', $firstPrizeCount); $result['secondPrize'] = drawPrizeWithSpecify($uidPool, $item['jp2_uid'] ?? '', $secondPrizeCount); $result['thirdPrize'] = drawPrizeWithSpecify($uidPool, $item['jp3_uid'] ?? '', $thirdPrizeCount); $result['fourthPrize'] = drawPrizeWithSpecify($uidPool, $item['jp4_uid'] ?? '', $fourthPrizeCount); return $result; } function axz_drawWinners(&$userIds, $count) { $winners = array(); for ($i = 0; $i < $count; $i++) { // 从用户ID数组中随机选择一个用户 $randomIndex = array_rand($userIds); $winnerId = $userIds[$randomIndex]; // 将中奖用户添加到结果数组中,并从原数组中移除 $winners[] = $winnerId; unset($userIds[$randomIndex]); $userIds = array_values($userIds); // 新增:重置索引,避免array_rand报错 } return $winners; } function copy_message($id) { // 从 xz_cjzs 表中查找指定 id 的记录 $cjlist = db_find_one('xz_cjzs', array('id' => $id)); if (!$cjlist) { return []; } // 定义每页显示 200 条记录,当前页为第 1 页 $page = 1; // 从 post 表中查找指定主题帖下的所有帖子 $copyuser = post_find_by_tid($cjlist['thread_id'], $page, 9999999999); $fzuser = []; // 解码 zj_uids 字段为数组 $zjusers = json_decode($cjlist['zj_uids'], true); $zjdj = ['firstPrize', 'secondPrize', 'thirdPrize', 'fourthPrize']; // 存储所有中奖用户的 uid $winning_uids = []; foreach ($zjdj as $item) { if (empty($zjusers[$item])) { continue; } $jpdj = $zjusers[$item]; foreach ($jpdj as $item2) { $useruid = $item2['uid']; $winning_uids[] = $useruid; } } // 创建一个以 UID 为键的关联数组,存储每个 UID 对应的帖子信息和序号 $uid_post_map = []; $index = 1; foreach ($copyuser as $post) { if (in_array($post['uid'], $winning_uids)) { if (!isset($uid_post_map[$post['uid']])) { $uid_post_map[$post['uid']] = [ 'message' => $post['message'], 'order' => $index ]; } } $index++; } // 将关联数组中的数据添加到 fzuser 数组中 foreach ($winning_uids as $uids) { if (isset($uid_post_map[$uids])) { $fzuser[] = $uid_post_map[$uids]; } } $outputString = ''; foreach ($fzuser as $item) { $outputString .= $item['message'] . "(" . $item['order'] . "楼)\n"; } return $outputString; } function cj_cyuz($tid,$id){ $r = db_find_one('post', array('uid'=>$id,'isfirst'=>0,'tid'=>$tid)); if(!$r){ global $uid; // 修复:添加全局变量引用,避免$uid未定义 if($uid){ $cyuz = ' 请登录并回帖参与'; }else{ $cyuz = ' 回帖即可自动参与'; } }else{ $cyuz = ' 您已成功参与,静候佳音'; } return $cyuz; } ?> 老哥发的注册送88出款了-交流区-【分享网】