2

我想“数字地”比较两个字符串。我的意思是喜欢2C小于11A。我试过这个,它不工作:

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

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

echo "Tests completed";
4

4 回答 4

7

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

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

于 2013-05-08T12:30:08.910 回答
2

试试这样:

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

你也可以看看: http: //php.net/manual/en/function.intval.php

于 2013-05-08T12:28:01.077 回答
0
if(intval(0x2A) < intval(0x11A)){
    echo "First corect";
}
else
{
    echo "Tests incompleted";
}

试试这个代码

于 2013-05-08T12:33:42.757 回答
0

编写一个函数:

  1. 将每个字符串标记为一个列表<Object>,其中每个对象可以是字符串整数,整数是从非数字之间的连续数字字符串创建的,字符串是任意 2 个数字之间的连续非数字。
  2. 在一个循环中逐个元素地比较两个列表。如果对象的类型不匹配(即,将整数与字符串进行比较),请做出较小/较大的决定,您希望将其排序为较小的字母或数字。如果它们匹配,只需进行小于等于大于比较。
  3. 如果Nth elements列表中两者相等,则继续比较N+1th elements,否则return t/f基于整数到整数或字符串到字符串的比较。
于 2013-05-08T12:47:11.713 回答