我试图编写PHP函数来生成一个3个字母的代码。第一个字母必须是X,Y或Z,它必须遵循以下格式:XAA,XAB,XAC ....直到XAW然后XBA,XBB,XBC ....直到XBW然后XCA,XCB ......等
当' X'完了,然后是YAA,YAB,等...... 当' Y'完成了ZAA,ZAB等等......
此代码的第2和第3个字母不能是X,Y或Z.
我从数据库中获取最后生成的代码。
这是我到目前为止所看到的......对最终条件感到困惑:
$valid = str_split("ABCDEFGHIJKLMNOPQRSTUVW");
if($result->num_rows() < 1)
$last_code = 'XAA';
else {
$result = $result->row_array();
$last_code = $result['employee_code'];
}
$arr = str_split($last_code);
$first = $arr[0];
$second = $arr[1];
$third = $arr[2];
if($first == 'X') {
} else if($second == 'Y') {
} else if($third == 'Z') {
}
答案 0 :(得分:0)
逻辑非常简单,因为PHP具有以下机制:
$letter = 'a';
echo ++$letter; // echoes 'b'
中很好
现在您需要确保自己是代码的边界:
'W'
,则会被'A'
替换,前一个字母会增加。'Z'
且应递增,则算法无法生成新代码。在所有其他情况下,只需增加最后字母即可。
if($result->num_rows() < 1) {
//If no code exists the new code is XAA, not the old one.
return 'XAA';
}
$result = $result->row_array();
$last_code = $result['employee_code'];
$new_code = $old_code;
if ($old_code[2] === 'W') {
if ($old_code[1] === 'W') {
if ($old_code[0] === 'Z') {
throw new Exception('All codes used! Add new algorithm');
}
$new_code[0] = ++$old_code[0];
$new_code[1] = 'A';
} else {
$new_code[1] = ++$old_code[1];
}
$new_code[2] = 'A';
} else {
$new_code[2] = ++$old_code[2];
}
return $new_code;
前两个if
条件处理边界1,而第三个if
条件处理边界2. else
块处理字母的增量。
答案 1 :(得分:0)
我编写了一个更简单的逻辑:
<video #media [vgMedia]="media" [src]="video.src" id="modalPlayer"
"preload="auto" [poster]="video.poster">
</video>