为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查现有元素的数组以分配票号?

如何检查现有元素的数组以分配票号?

PHP
一只萌萌小番薯 2021-09-05 20:14:02
我正在尝试创建一个函数,它会告诉我可以使用哪些免费数字,我有一个函数可以返回已经在数组中使用的数字。我希望根据空白数组检查包含现有元素的返回数组,如果该数字不在数组中,则将其推送/添加到空数组中以允许我返回可用数字/票证的数组。我在这里尝试了一些示例,并查看了有关尝试 array_intersect、in_array 等项目的 PHP 文档。我相信将空闲数字添加到空数组的最佳方法是使用 array_push,它尚未在示例代码中实现。到目前为止可用的数字功能:function freeNumbers($drawID){    $minTickets = 1;    $maxTickets = totalTickets($drawID);    $takenNumbers = takenNumbers($drawID);    $freeNumbers = array();    for($i = 1; $i<$maxTickets; $i++){        $x = $i-1;        foreach($takenNumbers as $v){            if(in_array($v, $freeNumbers)){                echo "Element is in array";                break;            } else {                echo $v . "is taken";            }        }    }    //return $freeNumbers;  }取数函数function takenNumbers($drawID){    $connect = new mysqli("localhost", "root", "", "dream");    $stmt = $connect->prepare("SELECT * FROM transaction WHERE DrawID = ?");    $stmt->bind_param("i", $drawID);    $stmt->execute();    $result = $stmt->get_result();    if($result->num_rows == 0) exit("No rows");    $tickets = array();    while($row = $result->fetch_assoc()){        $id = $row['ID'];        $tickets[] = $row['TicketNumber'];    }    return $tickets;}最大票数只是从数据库事务表中计算已分配的数量。在该项目的当前迭代中,我收到每个循环的以下“1 被采用”。提前致谢,我试图以最好的方式解释我正在尝试做的事情。但是,如果我无法描述某些内容,请回复,以便我可以进一步解释。
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

您可以使用以下命令获取所有票号和已取票号数组之间的差值,而不是检查每个数组项array_diff():


function freeNumbers($drawID){

    $minTickets = 1;

    $maxTickets = totalTickets($drawID);

    $takenNumbers = takenNumbers($drawID);

    $freeNumbers = array();


    $allTickets = range(1, $maxTickets);

    $freeNumbers = array_values(array_diff($allTickets, $takenNumbers));

    //return $freeNumbers;  

}

编辑:添加array_values()以重置从array_diff()函数返回的数组索引。


编辑:或者如果您更喜欢使用该array_push()功能,您可以这样做:


for($i = 1; $i<$maxTickets; $i++){

    if(!in_array($i, $takenNumbers)){

        array_push($freeNumbers, $i);

    }

}


查看完整回答
反对 回复 2021-09-05
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信