比较字符串“数字第一”

时间:2013-05-08 12:24:50

标签: php string sorting compare

我想比较两个字符串“数字”。我的意思是2C小于11A。我尝试过这个并没有用:

if("2A" < "11A"){
    echo "First corect";
}

if(strcmp("2A", "11A") < 0){
    echo "Last corect";
}

echo "Tests completed";

4 个答案:

答案 0 :(得分:7)

您正在寻找strnatcmp(或其不区分大小写的兄弟strnatcasecmp)。

这会将输入的数字部分作为数字(在“11whatever”之前放置“2whatever”)和文本部分作为文本(在“2b”之前放置“2a”)。

答案 1 :(得分:2)

试试这样:

if((int) '2A' < (int) '11A'){
    echo "First correct";
}

您还可以查看:http://php.net/manual/en/function.intval.php

答案 2 :(得分:0)

if(intval(0x2A) < intval(0x11A)){
    echo "First corect";
}
else
{
    echo "Tests incompleted";
}

试试这段代码

答案 3 :(得分:0)

写一个函数:

  1. 将每个String标记为一个列表<Object>,其中每个对象可以是字符串整数,其中整数是从非连续字符串之间的连续字符串创建的-digits,字符串是任意2位数之间的连续非数字。
  2. 在循环中逐个元素地比较两个Lists元素。如果对象的类型不匹配(即将整数与字符串进行比较),则将要排序的较小/较大的决定作为较小的字母或数字。如果匹配只是执行小于等于大于比较。
  3. 如果列表中的两个Nth elements相等,则继续比较N+1th elements,否则return t/f基于整数或整数或字符串到字符串比较。