PHP 生成不重复随机 ID 的方法:do...while 循环优化

在 PHP 开发中,我们经常需要生成不重复的随机 ID,例如在创建新的数据库记录、生成唯一标识符等场景下。常见的做法是使用 while 循环,在循环内部生成随机 ID,并检查是否已经存在,如果存在则重新生成,直到生成一个不重复的 ID。

然而,使用 while 循环存在一个问题,即在第一次循环时,可能生成的 ID 已经存在,导致循环无法执行。为了解决这个问题,我们可以使用 do...while 循环,保证至少会生成一次新的 ID。

以下是使用 while 循环和 do...while 循环生成不重复随机 ID 的示例代码:

使用 while 循环:

<?php
$used_ids = []; // 存储已经使用过的ID
$min = 1;
$max = 10;
$id = rand($min,$max);
while(in_array($id, $used_ids)){ // 检查ID是否已经被使用过
  $id = rand($min,$max); // 重新生成ID
}
$used_ids[] = $id; // 将新生成的ID加入已使用ID列表
echo '/home/api/updatecachemip?id=' . $id . '&hash='.substr(md5('yg_book_'.$id), 5, 16).'<br>';
?>

使用 do...while 循环:

<?php
$used_ids = []; // 存储已经使用过的ID
$min = 1;
$max = 10;

do {
  $id = rand($min,$max); // 生成新ID
} while(in_array($id, $used_ids)); // 检查ID是否已经被使用过,如果是,则重新生成ID

$used_ids[] = $id; // 将新生成的ID加入已使用ID列表
echo '/home/api/updatecachemip?id=' . $id . '&hash='.substr(md5('yg_book_'.$id), 5, 16).'<br>';
?>

使用 do...while 循环,保证了至少会生成一次新的 ID。在循环内部先生成新 ID,再检查是否已经被使用过,如果是,则重新生成 ID,直到生成了一个未被使用过的 ID。这样可以确保生成的 ID 不会重复。

总结

使用 do...while 循环来生成不重复随机 ID,可以有效避免 while 循环可能遇到的第一次循环无法执行的问题,确保至少生成一次新的 ID,提高代码的健壮性。

PHP 生成不重复随机 ID 的方法:do...while 循环优化

原文地址: https://www.cveoy.top/t/topic/m7pz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录