0

我正在使用此代码来比较方法中的字符串值,该方法效果很好。但是对于某些值,它给出了错误的值,例如以下值:

代码:

$string1 = "65";
$string2 = "5-fold";
$result = strcasecmp($string1, $string2);

switch ($result) {
    case -1: print "65 comes before 5-fold"; break;
    case 0: print "65 and 5-fold are the same"; break;
    case 1: print "65 comes after 5-fold"; break;
}

输出:

65 comes after 5-fold

我将此代码用于排序的数组列表,将它们排序为( 65 位于 5-fold 之前)。可能是因为“ - ”或其他我不知道的输出。你对这个有什么想法吗.....

下面的代码对多维数组进行排序:

       foreach($index_terms as $c=>$key) {
            $sort_id[] = $key['id'];
            $sort_term[] = $key['term'];
            $sort_freq[] = $key['freq'];
        }

        array_multisort($sort_term, SORT_ASC, $index_terms);
4

3 回答 3

1

你在65比较5-fold。如果65小于则返回 -1 5-fold,如果65大于则返回 1 5-fold

65 大于 5 倍……我没看出问题?

你想让 65 出现在它之前的 5 倍应该是多少?

于 2012-04-23T06:49:08.443 回答
0

代码 :

<?php
    $string1 = "65";
    $string2 = "5-fold";
    $result = strcasecmp($string1, $string2);

    echo $result;
?>

输出 :

1


提示:您的输出没有问题。1表示第二个操作数较大,-1表示第一个操作数较大。

于 2012-04-23T06:53:59.547 回答
0

尝试使用Intval

strcasecmp 比较字符串的二进制值

$string1 = intVal("65"); 
$string2 = intVal("5-fold");  
$result = strcasecmp($string1, $string2);

switch ($result) {
    case -1: print "65 comes before 5-fold"; break;
    case 0: print "65 and 5-fold are the same"; break;
    case 1: print "65 comes after 5-fold"; break; }
于 2012-04-23T06:56:49.980 回答