猿问

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

我正在尝试创建一个函数,它会告诉我可以使用哪些免费数字,我有一个函数可以返回已经在数组中使用的数字。


我希望根据空白数组检查包含现有元素的返回数组,如果该数字不在数组中,则将其推送/添加到空数组中以允许我返回可用数字/票证的数组。


我在这里尝试了一些示例,并查看了有关尝试 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 被采用”。


提前致谢,我试图以最好的方式解释我正在尝试做的事情。但是,如果我无法描述某些内容,请回复,以便我可以进一步解释。


一只萌萌小番薯
浏览 136回答 1
1回答

温温酱

您可以使用以下命令获取所有票号和已取票号数组之间的差值,而不是检查每个数组项array_diff():function freeNumbers($drawID){&nbsp; &nbsp; $minTickets = 1;&nbsp; &nbsp; $maxTickets = totalTickets($drawID);&nbsp; &nbsp; $takenNumbers = takenNumbers($drawID);&nbsp; &nbsp; $freeNumbers = array();&nbsp; &nbsp; $allTickets = range(1, $maxTickets);&nbsp; &nbsp; $freeNumbers = array_values(array_diff($allTickets, $takenNumbers));&nbsp; &nbsp; //return $freeNumbers;&nbsp;&nbsp;}编辑:添加array_values()以重置从array_diff()函数返回的数组索引。编辑:或者如果您更喜欢使用该array_push()功能,您可以这样做:for($i = 1; $i<$maxTickets; $i++){&nbsp; &nbsp; if(!in_array($i, $takenNumbers)){&nbsp; &nbsp; &nbsp; &nbsp; array_push($freeNumbers, $i);&nbsp; &nbsp; }}
随时随地看视频慕课网APP
我要回答