给你一个数组$array = array('a','D','z','t','R','I','f','Y','4','F','H','o','m','8','3','J','1','A','K','Q','v','S','7','r','W','O','b','w','y','C','5','G','e','h','j','X','V','B','Z','k','L','d','s','U','E','x','T','i','N','M','l','q','g','0','n','2','P','c','6','u','p','9');以数据表的自增id的值为条件向这个数组取6个值 规律如下:自增ID为1取数组的6个下标为[0,0,1,2,3,4],自增ID为2取数组的6个下标为[0,1,2,3,4,5],自增ID为61取数组的6个下标为[0,60,61,0,1,2],自增ID为62取数组的6个下标为[0,61,0,1,2,3],自增ID为63取数组的6个下标为[1,0,1,2,3,4],自增ID为64取数组的6个下标为[1,1,2,3,4,5],按照这个规律写一个php函数不能出现重复结果
时间: 2023-08-20 10:33:03 浏览: 82
JS中Array数组学习总结
以下是实现您要求的 PHP 函数:
```php
function getResult($id) {
$array = array('a','D','z','t','R','I','f','Y','4','F','H','o','m','8','3','J','1','A','K','Q','v','S','7','r','W','O','b','w','y','C','5','G','e','h','j','X','V','B','Z','k','L','d','s','U','E','x','T','i','N','M','l','q','g','0','n','2','P','c','6','u','p','9');
$result = array();
$result[] = $array[($id - 1) % 62];
for ($i = 1; $i < 6; $i++) {
$index = ($result[$i - 1] + $id + $i - 1) % 62;
if (in_array($index, $result)) {
$result[] = ($index + 1) % 62;
} else {
$result[] = $index;
}
}
return implode('', array_map(function($i) use ($array) {
return $array[$i];
}, $result));
}
```
该函数接受一个自增 ID 作为参数,并根据您的规律从数组中取出相应的 6 个字符。在函数内部,我们首先定义了数组 `$array`,其中包含了所有可能的字符。
接下来,我们使用循环取出规律中的每个下标。对于第一个下标,我们只需要将 `$id` 减去 1,然后对 62 取模即可。对于后面的 5 个下标,我们需要根据规律进行计算。
我们使用一个循环来计算规律中的每个下标。对于每个下标,我们使用公式 `($result[$i-1] + $id + $i - 1) % 62` 来计算出相应的索引,其中 `$result[$i-1]` 表示上一个下标在数组 `$array` 中的索引。如果计算出的索引已经在结果数组 `$result` 中出现过,我们就将该索引加 1 取模 62,以避免出现重复的下标。最后,我们将新的下标添加到结果数组中。
最后,我们使用 `implode` 函数将结果数组中的下标转换成字符串,并返回最终的结果字符串。
阅读全文