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

You're comparing 65 to 5-fold. It returns -1 if 65 is less than 5-fold and 1 if 65 is greater than 5-fold.

65 is greater than 5-fold... I don't see the problem?

What is 5-fold supposed to be that you want 65 to come before it?

于 2012-04-23T06:49:08.443 に答える
0

コード :

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

    echo $result;
?>

出力:

1


ヒント :出力に問題はありません。1は、2 番目のオペランドの方が大きいことを-1意味し、最初のオペランドの方が大きいことを意味します。

于 2012-04-23T06:53:59.547 に答える
0

インターバルを使ってみる

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 に答える