PHP字符串比较输出错误:

时间:2012-04-23 06:43:55

标签: php string comparison

我正在使用此代码来比较方法中的字符串值,这非常有效。但是对于某些值,它会给出错误的值,例如低于值:

代码:

$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倍)。可能是这个输出,因为“ - ”或其他我不知道的东西。你对此有任何想法......

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

       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);

3 个答案:

答案 0 :(得分:1)

您正在将655-fold进行比较。如果65小于5-fold,则返回-1;如果65大于5-fold,则返回1。

65大于5倍......我没有看到问题?

你希望65岁之前的5倍应该是什么?

答案 1 :(得分:0)

代码:

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

    echo $result;
?>

输出

  

1


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

答案 2 :(得分: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; }