Я пытаюсь сгенерировать уникальное случайное значение из массива и сохранить его в другом массиве, чтобы его нельзя было использовать снова.
Мне удалось сгенерировать случайное значение на основе мета-поля, но я не уверен, как бы я сделал это уникальным, и чтобы те же значения не генерировались снова. Я создал пустой массив $tickethistory
для сохранения значений. Возможно ли при следующем запуске запустить проверку проверки, чтобы $lottery_max_tickets
не включало значения $tickethistory
?
Я использую функцию ниже, которая возвращает число и I ', вызывая его, когда клиенты покупают продукт в Woocommerce.
function add_lottery_ticket_number( $postid ) {
$tickethistory = array();
$lottery_max_tickets = get_post_meta( $postid, '_max_tickets', true );
$max_tickets = range(1, $lottery_max_tickets);
$ticketallocated = array_rand($max_tickets, 1);
$tickethistory[] = $ticketallocated;
return $ticketallocated;
}
for ( $i = 0; $i < $item_meta['_qty'][0]; $i++ ) {
add_post_meta( $product_id, '_participant_id', $order->get_user_id() );
$participants = get_post_meta( $product_id, '_lottery_participants_count', true ) ? get_post_meta( $product_id, '_lottery_participants_count', true ) : 0;
update_post_meta( $product_id, '_lottery_participants_count', intval( $participants ) + 1 );
$this->add_lottery_to_user_metafield( $product_id, $order->get_user_id() );
$ticketnumber = $this->add_lottery_ticket_number($product_id);
$log_ids[] = $this->log_participant( $product_id, $order->get_user_id(), $ticketnumber, $order_id, $item );
}