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

Php 如何检查数组中的现有元素以分配票证号?,php,Php,我正在尝试创建一个函数,它将告诉我可以使用哪些自由数字,我有一个函数,它返回数组中已经获取的数字 我希望对照空白数组检查返回的数组中的现有元素,如果该数字不在数组中,则将其推/添加到空数组中,以允许我返回可用数字/票证的数组 我在这里尝试了一些示例,并查看了一些项目的PHP文档,如array_intersect、in_array等 我认为将空闲数字添加到空数组的最佳方法是使用array_push,到目前为止,该方法尚未在示例代码中实现 目前可用的数字功能: function freeNumber

我正在尝试创建一个函数,它将告诉我可以使用哪些自由数字,我有一个函数,它返回数组中已经获取的数字

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

我在这里尝试了一些示例,并查看了一些项目的PHP文档,如array_intersect、in_array等

我认为将空闲数字添加到空数组的最佳方法是使用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;  
}
Max tickets只是从数据库事务表中计数,以计数已分配的编号

在这个项目的当前迭代中,我收到了以下每个循环的“1被采用”


提前感谢你,我已经尽可能用最好的语言解释了我要做的事情。但是,如果我无法描述某些内容,请回复,以便我可以进一步解释。

您可以使用
数组_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\u values()
以重置从
array\u diff()函数返回的数组索引

编辑:或者,如果您更喜欢使用
array\u push()
函数,您可以这样做:

for($i = 1; $i<$maxTickets; $i++){
    if(!in_array($i, $takenNumbers)){
        array_push($freeNumbers, $i);
    }
}
用于($i=1;$i)
for($i = 1; $i<$maxTickets; $i++){
    if(!in_array($i, $takenNumbers)){
        array_push($freeNumbers, $i);
    }
}