$$meta['box_type'], 'item_id' => $$meta['item_id'], 'num' => $$meta['num'], 'weight' => $$meta['weight'], 'type' => $$meta['type'], 'time' => $$meta['time'], 'count' => $$meta['count'], ); } public static function randomBox($id, &$itemList, $cb = null) { $meta = self::get($id); if ($meta) { $ids = splitStr1($meta['item_id']); $times = splitStr1($meta['time']); $nums = splitStr1($meta['num']); $weights = splitStr1($meta['weight']); $totalWeights = 0; foreach ($weights as $weight) { $totalWeights += $weight; } if (count($ids) == count($times) && count($ids) == count($nums) && count($ids) == count($weights) && count($ids) > 0 && $totalWeights > 0 ) { $rnd = rand(0, $totalWeights); $currWeight = 0; $i = 0; foreach ($weights as $weight) { $currWeight += $weight; if ($currWeight > $rnd) { if ($cb && !$cb($ids[i])){ continue; } array_push($itemList, array( 'item_id' => $ids[$i], 'item_num' => $nums[$i], 'time' => $times[$i] )); if ($id == 8) { //这是为啥??? array_push($itemList, array( 'item_id' => $ids[$i]+ 2000, 'item_num' => $nums[$i], 'time' => $times[$i] )); } break; }//end if ++$i; } } } } public static function randomBoxNN($id, &$itemList) { $meta = self::get($id); if ($meta) { $ids = splitStr1($meta['item_id']); $times = splitStr1($meta['time']); $nums = splitStr1($meta['num']); $weights = splitStr1($meta['weight']); if (count($ids) == count($times) && count($ids) == count($nums) && count($ids) == count($weights) && count($ids) > 0 ) { $i = 0; foreach ($weights as $weight) { $rnd = rand(0, 10000); if ($weight >= $rnd) { array_push($itemList, array( 'item_id' => $ids[$i], 'item_num' => $nums[$i], 'time' => $times[$i] )); }//end if ++$i; } } } } public static function randomBoxNew($id, &$itemList) { $meta = self::get($id); if ($meta) { $cb = function ($itemId) use(&$itemList) { foreach ($itemList as $item) { if ($item['item_id'] == $itemId) { return false; } } return true; }; for ($i = 0; $i < $meta['count']; ++$i) { self::randomBox($id, $itemList, $cb); } } } protected static function getMetaList() { if (!self::$metaList) { self::$metaList = getMetaTable('box@box.php'); } return self::$metaList; } protected static $metaList; }