首页 > 试题广场 >

以下程序运行结果:( )

[单选题]
以下程序运行结果:(     )
<?
       $str = “LAMP”;
       $str1 = “LAMPBrother”;
       $strc = strcmp($str,$str1);
       switch ($strc){
              case 1:
                     echo“str > str1”;
                     break;
              case –1:
                     echo“str < str1”;
                     break;
              case 0:
                     echo“str=str1”;
                     break;
              default:
                     echo“str <> str1”;
       }
?>
  • str > str1
  • str < str1
  • str = str1
  • str <> str1
选D
首先要理解strmp($str1,$str2)函数的意思,比较两个字符串的大小,比较时计算了两个字符串相差(不同)字符的个数一起作为返回
情况如下:
1、$str1==str2   返回 0
2、$str1 > str2   返回 1
3、$str1 < str2   返回 -1

注意:对于第2、3种情况,上面列出的只是返回结果的符号而已,并不是最终的结果
          最终返回结果是:   所返回的符号乘上两个字符串相比不相同的字符个数

对于本题来说, $str = “LAMP”; $str1 = “LAMPBrother”;
两个字符串不相同的字符有7个,且 $str < $str2,返回符号为 -1
所以最终返回的结果为 -7 (-1 * 7)

switch 条件判断case语句都没有匹配的,跳到default:所以执行  echo“str <> str1”; 
所以选D
编辑于 2015-08-20 18:45:18 回复(5)
官方解释: 
当$str1==$str2时,返回0 
当$str1<$str2时,返回<0(注意,没有说返回-1) 
当$str1>$str2时,返回>0(注意,没有说返回1) 

下面是我做的实验: 
当$str1="",$str2="abcd"的时候,返回-4 即-1*4=-4(4个相差的字数) 
当$str1="Ab",$str2="Abcd"的时候,返回-2,即-1*2=-2(2是相差的字数) 

当$str1="A",$str2="ab"的时候,返回-32(a与A相差的ASCII码值) 
当$str1="A",$str2="abdsldjdfle"的时候,返回-32(a与A相差的ASCII码值) 

由以上得出结论: 
当$str1,$str2其中有一个只有1位的时候,比较的是第1位相差的ASCII码值。 
当$str1,$str2没有1位的,比较的是相差的字数。
发表于 2016-03-22 17:37:11 回复(6)
当比较的两个字符一个包含另一个时,比较相差的个数;当比较的两个字符不完全包含时,比较差异的那个字符的ASCII码的大小



编辑于 2017-05-24 15:23:23 回复(0)
strcmp($str1,$str2);
用来比较两个字符串的大小。如果$str1 = $str2等于返回0
如果$str1<$str2那么返回'两个字符串不同的字符'的负数(4个不一样就是-4)
如果$str1>$str2那么返回'两个字符串不同的字符'的整数(4个不一样就是4)

编辑于 2017-05-24 17:28:11 回复(0)
5.5.30做的测试
结果分两种情况:
1.如果一个字符串是另一个字符串从开头起的一部分,返回的结果会乘以数量
2.否则,只返回1、-1、0
发表于 2016-12-14 16:45:42 回复(1)
int strcmp ( string $str1 , string $str2 )

如果 str1 小于 str2,返回负数;如果 str1 大于 str2,返回正数;二者相等则返回 0。 
发表于 2019-07-17 12:01:36 回复(0)
1. $str1 > $str2 返回大于0,当str2刚好是str1开头的部分时,str2比str1多几位,则返回几,否则都是1
    $str1 = 'abc';    $str2 = 'aaa';    => 1
    $str1 = 'abc';    $str2 = 'abcdef';    =>3

2. $str1 < $str2 返回小于0,刚好跟第一种情况类似
3. $str1 == $str2 返回0,确定无疑的
发表于 2018-05-17 15:19:55 回复(0)
strcmp($str1, $str2)
正确的答案应该是这样的,如果 $str1 和 $str2 存在包含关系,并且是从头开始就是包含关系,(类似题目中的情况),但 'AB' 和 'cAB'不算,这时返回的就是它们不同的字符的个数,谁的字符多谁大;如果不存在这种包含关系,那么就根据不同字符的ASCII码大小关系返回-1,1。
strcmp("A", "Abcdf")   // -4,存在从头包含关系
strcmp("a", "Abcdf")   // 1
strcmp("abc", "Aabcd") // 1,包含,但是从头开始

发表于 2017-08-29 09:53:35 回复(0)
这里返回的负数表示:str 比 str1少了几个字符
这里返回的正数表示:str 比 str1多了几个字符
编辑于 2022-03-16 10:50:18 回复(0)
首先要理解strmp($str1,$str2)函数的意思,比较两个字符串的大小,比较时计算了两个字符串相差(不同)字符的个数一起作为返回 这里的$str1比$str2字符个数少,且少七个 故返回的结果应该为—1*7
编辑于 2020-11-25 00:26:54 回复(0)

PHP 5.6.40 和 PHP 7.4.1

完全相同则为0

① 如果 str1 和 str2 有一个为空时

    如果 str1 为空 值为负 str2 长度
    如果 str2 为空 值为正 str1 长度

② 如果 str1 和 str2 都不为空

str1 和 str2 不相等字符开始计算,str1 的字符 减去 str2 的字符(ASCII码值)
ASCII码值 z > A,小写大于大写

$str1 = "Abdsfds";
$str2 = "Ac";
$str3 = strcmp($str1, $str2);
echo $str3; // 1

$str1 = "ABdsfds";
$str2 = "Ac";
$str3 = strcmp($str1, $str2);
echo $str3; // -33

③ 如果 str1 和 str2 其中一个完全包含另一个 则认为被包含为空,根据 ① 判断正负

$str1 = "ABds";
$str2 = "AB";
$str3 = strcmp($str1, $str2);
echo $str3; // 4

$str1 = "AB";
$str2 = "ABds";
$str3 = strcmp($str1, $str2);
echo $str3; // -4
发表于 2020-07-27 23:24:23 回复(0)
strcmp函数返回的结果如下结算:
左边大于右边是 1 
相等是 0 
小于右边是-1 
之后 两个字符串之间相差几个字符串 算出来结果之后 比如相差 5
那么返回的结果就是 -1 * 5
发表于 2020-04-26 21:05:41 回复(0)
1、出现不同的情况是字符串的个数不足 : 如 anb 与 anbced,  则是-1/1 * 多出来的字符串个数  -3
2、如果是某个字符不同,  如 anb  anded  ,  则结果为两个字字符的ascii码的差   ,  -2
发表于 2020-04-24 16:55:41 回复(0)
strcmp:比较大小且返回相差字符个数
发表于 2019-09-04 00:30:17 回复(0)

有没有简单易懂的说法,为什么会选d?🙄

发表于 2019-04-28 13:29:26 回复(0)
abcd都不对,因为`“`报错
编辑于 2018-12-04 16:36:52 回复(0)
链接:https://www.nowcoder.com/questionTerminal/60e159271e7c43f49643935dda5e1f1c
来源:牛客网
首先要理解strmp($str1,$str2)函数的意思,比较两个字符串的大小,比较时计算了两个字符串相差(不同)字符的个数一起作为返回
情况如下:
1、$str1==str2   返回 0
2、$str1 > str2   返回 1
3、$str1 < str2   返回 -1

注意:对于第2、3种情况,上面列出的只是返回结果的符号而已,并不是最终的结果
          最终返回结果是:   所返回的符号乘上两个字符串相比不相同的字符个数

对于本题来说, $str = “LAMP”; $str1 = “LAMPBrother”;
两个字符串不相同的字符有7个,且 $str < $str2,返回符号为 -1
所以最终返回的结果为 -7 (-1 * 7)

发表于 2018-03-06 19:19:33 回复(0)
首先要理解strmp($str1,$str2)函数的意思,比较两个字符串的大小,比较时计算了两个字符串相差(不同)字符的个数一起作为返回
情况如下:
1、$str1==str2   返回 0
2、$str1 > str2   返回 1
3、$str1 < str2   返回 -1

注意:对于第2、3种情况,上面列出的只是返回结果的符号而已,并不是最终的结果
          最终返回结果是:   所返回的符号乘上两个字符串相比不相同的字符个数
发表于 2017-04-11 13:46:57 回复(0)
我的测试:
echo strcmp('a', 'A');
echo strcmp('abc', 'cba');
php版本<5.5的输出:1、-1
php版本>=5.5的输出:32、-2

echo strcmp('a', 'B');
echo strcmp('abc', 'CBA');
php版本<5.5的输出:1、1
php版本>=5.5的输出:31、30


发表于 2016-11-21 11:14:48 回复(0)
每一个字符都要比较,-1*7=-7
发表于 2016-07-02 20:21:44 回复(0)