Php 寻找第一种可能性

Php 寻找第一种可能性,php,mysql,Php,Mysql,如果我有此模式来构建ID: CX00其中0可仅用一个数字替换。。但以下内容已在使用中: - CX00 - CX02 - CX04 - CX05 - CX07 - CX10 - CX11 - CX12 我如何通过PHP或MySQL轻松找到可用值CX01、CX03、CX06、CX08、CX09、CX13+?在PHP中,只需使用for循环对ID进行计数,直到找到足够的未使用ID为止。。。您希望总共有多少个ID?我不知道您的数据是如何存储的,所以我不想在数组中获取ID。一旦你这样做,这将找到下一个可用

如果我有此模式来构建ID:

CX00
其中0可仅用一个数字替换。。但以下内容已在使用中:

- CX00
- CX02
- CX04
- CX05
- CX07
- CX10
- CX11
- CX12

我如何通过PHP或MySQL轻松找到可用值
CX01、CX03、CX06、CX08、CX09、CX13+

在PHP中,只需使用for循环对ID进行计数,直到找到足够的未使用ID为止。。。您希望总共有多少个ID?

我不知道您的数据是如何存储的,所以我不想在数组中获取ID。一旦你这样做,这将找到下一个可用的

<?php

function make_id($n) {
    $out = 'CX';
    if ($n < 10) $out .= '0';
    return $out . $n;
}

// Get these from some source
$items = array('CX00', 'CX02', 'CX04', 'CX05');
$id = make_id(0);

for($i=0; in_array($id, $items); $i++)
    $id = make_id($i);

echo $id;

?>


这称为蛮力方法,如果你有很多ID,可能有更有效的方法。最大值为100,应该不会有任何问题。

为什么不使用例如自动递增字段?因为我为其制作的公司希望在删除ID后重新使用。。如果只是这么简单>\u,那么这将是一个棘手的问题!我认为你不能构造一个这样的查询:“给我表中没有的第一件东西”。我怀疑除了每次循环外,你还有很多选择。(也许你可以做一次一次性练习,生成一个未使用ID的列表。)那么你最多只能有100个唯一ID?由于您没有提到CY00增量,如果是这样,那么您可以从数据库中获取所有当前ID,并使用范围(0,99)和sprintf函数组合进行迭代,直到匹配缺少的ID为止。