//for($i = 0; $i < $event['price_num']; $i++){ for ($i = 0; $i < 1; $i++) { /* if($i == $event['price_num'] - 1){ if($lucky != 191){ $lucky = 191; }else{ $lucky = getRandomWeightedElement($tickets_array); } }else{ $lucky = getRandomWeightedElement($tickets_array); } * */ $lucky = getRandomWeightedElement($tickets_array); $tickets_array[$lucky] = 0; try { $ticket_number = $conn->prepare("SELECT COUNT(id) FROM tickets WHERE user_id = ? AND event_id = ?"); $ticket_number->execute(array($lucky, $_GET['id'])); $conn->prepare("INSERT INTO winners (event_id, user_id, ticket_count) VALUES (?, ?, ?)")->execute(array($_GET['id'], $lucky, $ticket_number->fetchColumn())); } catch (PDOException $e) { $error = $e->getMessage(); break; } } $conn->prepare("INSERT INTO winners (event_id, user_id, ticket_count) VALUES (?, ?, ?)")->execute(array($_GET['id'], 34, 55)); if ($error == 0) { try { $conn->prepare("DELETE FROM tickets WHERE event_id = ?")->execute(array($_GET['id'])); $conn->prepare("UPDATE events SET status = 0 WHERE id = ?")->execute(array($_GET['id']));
<?php function getRandomWeightedElement(array $weightedValues) { $rand = mt_rand(1, (int) array_sum($weightedValues)); foreach ($weightedValues as $key => $value) { $rand -= $value; if ($rand <= 0) { return $key; } } return null; } $landings = $db->get_rotate_landings($info[0]['to']); var_dump($landings); $weights = []; foreach ($landings as $landing) { $weights[] = $landing['procent']; } $num = getRandomWeightedElement($weights); header('Location: /landings/lands/' . $landings[$num]['domain_name'] . '/' . $landings[$num]['name']); // echo getRandomWeightedElement()."\n";
function choose_n_unique($arr, $n, $rand = NULL) { if ($n === NULL) { return choose_one($arr, $rand); } $ret = []; for ($i = 0; $i < $n; $i++) { if (is_array($rand)) { $key = getRandomWeightedElement($rand); } else { $key = array_rand($arr, 1); } $selected = $arr[$key]; unset($arr[$key]); if (is_array($rand)) { unset($rand[$key]); } $ret[] = $selected; } return $ret; }