PHP strcmp结果int的含义

时间:2019-04-24 09:23:45

标签: php string strcmp

在php中,有一个内置函数strcmp用于比较两个字符串是否相同。

返回值是整数,如果第一个参数大于第二个参数,我将得到> 0,如果不是< 0,并且如果是相同的0,则返回。

所以我没有得到的部分是将字符串比较为数字。 PHP是否将字符串转换为数字,如果可以,PHP如何转换?

$a = 'acorn';
$b = 'zebra';
var_dump( strcmp($a, $b) ); // -25 <- what's this number? seems like alphabetical position...nnn

我得到的号码真的不重要,我只接受它是多少吗?

3 个答案:

答案 0 :(得分:1)

查看PHP:strcmp doc:

  

如果str1小于str2,则返回<0;否则,返回0。如果str1大于> 0   str2,如果相等则为0。

是的,您可以按原样使用它来比较您的字符串。

但是,如果您想了解函数返回的数字,则取决于构成字符串的字符。

以ASCII格式:

  

A = 65

因此,如果字符串不同,则一个字符串将大于另一个字符串。

因此,您还可以使用简短的脚本轻松对其进行测试:

<?php

$a='A';
$b='B';
$c='C';

//Return -1 because $a is smaller than $b by one (65 < 66 )
echo strcmp($a,$b);

//Return -2 because $a is smaller than $c by two (65 < 67 )
echo strcmp($a,$c);


//Return -1 because $b is smaller than $c by one (66 < 67 )
echo strcmp($b,$c);

//Return 1 because $c is greater than $b by one (67 > 66 )
echo strcmp($c,$b);

//Return 2 because $c is greater than $a by two (67 > 65 )
echo strcmp($c,$a);

答案 1 :(得分:0)

strcmp用于比较PHP中的两个字符串。 如果结果大于0,则平均变量1($ a)大于Var2($ b) 如果返回结果小于0,则其平均值$ b较大;如果结果等于0,则其两个字符串均相等。

$a="Hello world!";
$b= "Hello world!";
var_dump(strcmp($a, $b)); // result is 0

$a = "Hello";
$b = "Hello World";
var_dump(strcmp($a, $b)); // Outputs: -6

如果您想看到差异,可以使用它

$a = 'some-content-here-example';
$b = 'some-content-example';
$asp = preg_split('//', $a, -1);
$bsp = preg_split('//', $b, -1);

$l1 = count($asp);
$l2 = count($bsp);

$length = $l1;
if ($l2 > $l1) {
    $length = $l2;
}
$record = null;
$x = null;
for ($x = 0; $x < $length; $x++) {
    if ($a[$x] != $b[$x]) {
        if (!isset($a[$x])) {
            $record.= $b[$x];
        } else {
            $record.= $a[$x];
        }
    }
}

echo $record;

答案 2 :(得分:-1)

binary safe string comparison 如果str1小于str2,则返回<0;如果str1大于str2,则> 0;如果相等,则为0。