所以很难对我的问题提出一个问题,所以只需想象一下我要解释的内容,
图像中有多个字符串列表,其中包含从Z到AA,AB,AC等的从A到Z的字符...
我想在列表中获得最高的评价,因为我正在尝试执行以下操作:
$max_letter = "A";
while($row = mysqli_fetch_assoc($recordset)) {
if($row["new_letter"] > $max_letter) {
$max_letter = $row["new_letter"];
}
}
问题在于,当$row["new_letter"]
等于"AA"
并且$max_letter
等于"Z"
时,它不会将$max_letter
更新为{{ 1}},因为它认为"AA"
高于"Z"
但是如果我做这样的事情:
"AA"
我的输出将是
$str = "Z";
echo ++$str;
我的问题的示例:
AA
答案 0 :(得分:1)
我会尝试编写一些将char val转换为int val的函数
<?php
//echo ord('A') - 64;
// so base is -64
// 26 chars
// read from beggining
$value = 0;
// 27 in charval
$charVal = 'AA';
$len = strlen($charVal);
$i = 0;
while ($i < $len) {
if ($value != 0) {
$value *= 26;
}
$value += ord($charVal[$i]) - 64;
$i++;
}
echo $value;
因此,您可以使其运行并调用if(charToInt('AA')> charToInt('Z'){...
答案 1 :(得分:0)
构建一个包含所有字母的数组..然后,这个问题变得微不足道了:)
$maxLetters = ['a', 'b', 'c', 'z', 'aa'];
natsort($maxLetters);
echo array_pop($maxLetters) . ' is the highest letter';
我会尽力满足您的需求
$maxLetters = [];
while($row = mysqli_fetch_assoc($recordset)) {
$maxLetters[] = $row['new_letter'];
}
natsort($maxLetters);
$highestLetter = array_pop($maxLetters);
echo $highestLetter;
答案 2 :(得分:0)
这可能会起作用:
$max_letter = "A";
while($row = mysqli_fetch_assoc($recordset)) {
if(cvrt($row["new_letter"]) > cvrt($max_letter)) {
$max_letter = $row["new_letter"];
}
}
function cvrt(incStr){
$ret = "";
foreach(str_split(incStr) as $v){
$ret .= ord($v);
}
return $ret;
}
不太漂亮,但我认为它适用于任何长度的字符串。
您在这里所做的是将字符串中字母的数字值连接起来,然后将它们返回以作为数字进行比较。