PHP字符串包含整数

Ali*_*mra 6 php mysql

我有以下字符串如下:

1BG200,1M400,1BA1000
Run Code Online (Sandbox Code Playgroud)

我想将上述字符串与Desc Order进行比较......

码:

$sql = "SELECT * FROM collected WHERE c_no BETWEEN '".$from."' AND '".$to."' ORDER BY c_no Desc";
Run Code Online (Sandbox Code Playgroud)

输出:

1M400
1BG200
1BA1000 
Run Code Online (Sandbox Code Playgroud)

它应该是1000更大,然后400,200 ..我怎么能比较它们?我认为比较包含整数的字符串是不对的!我找不到适合我的问题的正确解决方案?

有人建议使用preg_matchsubstr..但你可以看到有单个和双重字符ex(M和BG).

对不起,我不熟悉PHP ..请帮忙!

Ott*_*tto 3

您可以使用自定义排序,仅查看数字部分

function cmp($a, $b)
{
    $numa = intval(preg_replace('/[0-9]*[A-Z]+/', '', $a));
    $numb = intval(preg_replace('/[0-9]*[A-Z]+/', '', $b));
    if($a == $b) return 0;
    return ($a < $b) ? -1 : 1;
}

//Now get the list and sort
usort($list, "cmp");
Run Code Online (Sandbox Code Playgroud)

  • 此外,如果您希望前导数字也成为排序算法的一部分,您可以将模式交换为“/[^0-9]/”`,这将基于所有数字进行排序。 (2认同)