比较增量字符串

时间:2018-07-17 10:35:50

标签: php arrays string string-comparison

所以很难对我的问题提出一个问题,所以只需想象一下我要解释的内容,

图像中有多个字符串列表,其中包含从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

3 个答案:

答案 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;
}

不太漂亮,但我认为它适用于任何长度的字符串。

您在这里所做的是将字符串中字母的数字值连接起来,然后将它们返回以作为数字进行比较。